首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails 3 -- Bundler/Capistrano错误

Rails 3 -- Bundler/Capistrano错误
EN

Stack Overflow用户
提问于 2010-09-18 01:50:12
回答 6查看 31K关注 0票数 53

我在我的开发机器上有一个基本的Rails 3应用程序可以在本地运行,但我想尽早测试部署,以确保一切正常。我正在使用Capistrano进行部署。

当我运行cap deploy (在所有其他必要的设置之后)时,它在此命令上中断,并显示以下错误:

代码语言:javascript
复制
[...]
* executing 'bundle:install'
* executing "bundle install --gemfile /var/www/trex/releases/20100917172521/Gemfile --path /var/www/trex/shared/bundle --deployment --quiet --without development test"

servers: ["www.[my domain].com"]
[www.[my domain].com] executing command
** [out :: www.[my domain].com] sh: bundle: command not found
command finished
[...]

所以看起来它在服务器上找不到bundle命令。

但是,当我登录到服务器时...

代码语言:javascript
复制
$ ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]
$ rails -v
Rails 3.0.0
$ bundle -v
Bundler version 1.0.0

...the bundle命令工作正常。

会出什么问题呢?

-

(此外,为了完整性:)

代码语言:javascript
复制
$ which ruby
~/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
$ which rails
~/.rvm/gems/ruby-1.9.2-p0/bin/rails
$ which bundle
~/.rvm/gems/ruby-1.9.2-p0/bin/bundle
EN

回答 6

Stack Overflow用户

发布于 2011-08-12 19:20:10

找不到捆绑包,因为没有加载.bash_profile,因此您的路径是错误的。这可能是因为您在.bash_profile中有RVM脚本。

简单的答案是将RVM脚本从.bash_profile移动到.bashrc,Capistrano应该能够找到它(还要验证.bash_profile源.bashrc)。

Capistrano使用SSH通过non-interactive shell在服务器上执行命令。此shell会话将执行source .bashrc but not .bash_profile。我向两者添加了一个ECHO语句,并通过SSH运行LS。您可以在下面的结果中看到,只有.bashrc是源的:

代码语言:javascript
复制
$ ssh user@123.amazonaws.com ls
.bashrc loaded
git
file1
file2
票数 26
EN

Stack Overflow用户

发布于 2012-02-16 07:31:33

我在使用rbenv时也遇到了同样的问题。解决方案是从我的.bashrc文件底部提取特定于rbenv的行,并将它们放在顶部。如果shell没有在交互模式下运行,那么我的.bashrc文件的第一行将返回aborting。

票数 11
EN

Stack Overflow用户

发布于 2010-11-24 23:46:27

最后一行实际上应该是

代码语言:javascript
复制
set :rvm_type, :user

也就是说,user必须是一个符号,而不是一个变量,否则将得到

代码语言:javascript
复制
undefined local variable or method `user'
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3737678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档