1

我使用 beanstalk 在 EC2 上部署了我的 rails 4 应用程序。由于目前没有可用的 ruby​​ 2.0 和 rails 4.0 容器,我只是在实例上安装了 ruby​​ 2.0 和 rails 4.0 跟随这篇文章:在 AWS EC2 上安装 Ruby 2.0 和 Rails 4.0.0beta

但仍然从乘客那里得到错误:

Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0 (Bundler::RubyVersionMismatch)

我 cd 进入 /var/app/current,运行

$ ruby -v 
ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-linux]

有什么我错过的吗?

谢谢

一些信息更新:

$ which bundle
/usr/local/rvm/gems/ruby-2.0.0-p195/bin/bundle
$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.3
  - RUBY VERSION: 2.0.0 (2013-05-14 patchlevel 195) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-2.0.0-p195
  - RUBY EXECUTABLE: /usr/local/rvm/rubies/ruby-2.0.0-p195/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-2.0.0-p195/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/rvm/gems/ruby-2.0.0-p195
     - /usr/local/rvm/gems/ruby-2.0.0-p195@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
4

2 回答 2

2

Elastic Beanstalk 使用脚本启动乘客/etc/init.d/passenger,我认为它不会获得与您的 bash 用户相同的环境变量。要了解我的意思,请转到/etc/init.d/passenger并将环境变量输出到日志文件,如下所示:

# /etc/init.d/passenger
. /opt/elasticbeanstalk/support/envvars
env > /var/log/debug-rvm.log

然后,执行

$> sudo service passenger restart
$> cat /var/log/debug-rvm.log

查看乘客流程启动时可用的所有环境变量。

启动脚本还为我们提供了一些关于如何初始化这些变量的线索。特别是,我了解到您可以编辑/opt/elasticbeanstalk/support/envvars.d/appenv以添加您自己的自定义环境变量。您也许可以PATH使用此文件编辑变量并加载 rvm。

我添加了对您引用的问题的答案,这可能对您的目的有用。

选择

或者,您可以符号链接/usr/bin/ruby到 ruby​​ 2.0,但我认为要做到这一点可能非常棘手,因为您正在绕过 rvm。希望这可以帮助。

$> ls -l /usr/bin/ruby
lrwxrwxrwx 1 root root 16 Jun  7 14:57 /usr/bin/ruby -> /usr/bin/ruby1.9
于 2013-06-10T03:31:29.477 回答
0

您的乘客配置是指向 ruby​​ 1.8 还是 ruby​​ 2.0?另外,您是否有适用于 ruby​​ 2.0 的乘客预发布版本?

尝试在不使用 sudo 的情况下运行 gem install passenger -prepassenger-install-apache2-module并确保乘客配置行指向 2.0 而不是 1.8 或 1.9

于 2013-05-27T18:11:34.750 回答