【问题标题】:Bundler path problem捆绑器路径问题
【发布时间】:2011-06-24 10:58:05
【问题描述】:

我已经接管了一个由其他人部署到服务器的应用程序。设置有问题,缺少环境变量或类似问题,但我很难过。顺便说一句,这显然是一个 Rails 应用程序,在 REE 和 mod_rails (passenger) 下运行

这里有一些让我难过的控制台日志。首先,rake db:migrate 声称我没有 Rails 2.3.8

$ rake db:migrate
(in /var/www/ems.trustthevote.org/ems/current)
Missing the Rails 2.3.8 gem. Please `gem install -v=2.3.8 rails`, update your      
RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.

但是,bundler 说我愿意:

$ bundle list
Gems included by the bundle:
[...snip]
  * actionmailer (2.3.8)
  * actionpack (2.3.8)
  * activerecord (2.3.8)
  * activeresource (2.3.8)
  * activesupport (2.3.8)
[...snip...]
  * rails (2.3.8)

但另一方面,gem 说不:

$ gem list rails

*** LOCAL GEMS ***

以下是一些相关的环境变量:

RUBYOPT=-rauto_gem
RUBYLIB=~/.gem
最后,这是 Ruby 的想法:
$ irb
irb(main):001:0> $:
=> ["~/.gem", "/usr/lib64/rubyee/site_ruby/1.8",     
"/usr/lib64/rubyee/site_ruby/1.8/x86_64-linux", "/usr/lib64/rubyee/site_ruby", 
"/usr/lib64/rubyee/vendor_ruby/1.8", "/usr/lib64/rubyee/vendor_ruby/1.8/x86_64-linux", 
"/usr/lib64/rubyee/vendor_ruby", "/usr/lib64/rubyee/1.8", "/usr/lib64/rubyee/1.8/x86_64   
linux", "."]
irb(main):002:0> 
我的眼睛是交叉的。我错过了什么?

【问题讨论】:

  • 我的开发环境是Mac OS X,我的部署环境是Centos,运行乘客。

标签: ruby-on-rails ruby passenger bundler


【解决方案1】:

使用自定义捆绑路径时,请确保在捆绑器环境中运行 rake 命令。

bundle exec rake db:migrate

试试看。

【讨论】:

  • 嗯...不确定我是否使用自定义捆绑路径。我不认为我设置了一个,我可以“免费”获得一个吗?
  • 如果您只使用了bundle install,那么宝石将出现在gem list 中——因为它们不是必须使用自定义路径。关键是,使用bundle exec 将在加载了bundle 环境的情况下运行命令,因此bundle list 看到的所有gem 都将可用。
  • 我可能应该指出,您可以通过查看 RAILS_ROOT/.bundle/config 中的 BUNDLE PATH 变量来查看捆绑 gem 的位置,尽管这与运行命令。
【解决方案2】:

Bundler 将 gem 安装在自定义目录中。这就是gem list 的结果不会显示它们的原因。

很遗憾,我不确定为什么命令 $ rake db:migrate 找不到您的 gem。

【讨论】:

  • 我不确定我是否在自定义目录中...我是否默认获得该目录?
猜你喜欢
  • 1970-01-01
  • 2015-08-15
  • 2011-03-30
  • 2016-03-05
  • 2011-11-10
  • 2011-06-17
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多