Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon ec2 使用beanstalk在EC2上部署ruby 2.0和rails 4.0_Amazon Ec2_Amazon Elastic Beanstalk_Ruby On Rails 4_Ruby 2.0 - Fatal编程技术网

Amazon ec2 使用beanstalk在EC2上部署ruby 2.0和rails 4.0

Amazon ec2 使用beanstalk在EC2上部署ruby 2.0和rails 4.0,amazon-ec2,amazon-elastic-beanstalk,ruby-on-rails-4,ruby-2.0,Amazon Ec2,Amazon Elastic Beanstalk,Ruby On Rails 4,Ruby 2.0,我用beanstalk在EC2上部署了rails 4应用程序。由于目前没有可用的ruby 2.0和rails 4.0容器,我只是在下面的文章中的实例上安装了ruby 2.0和rails 4.0: 但还是从乘客那里得到了错误: 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

我用beanstalk在EC2上部署了rails 4应用程序。由于目前没有可用的ruby 2.0和rails 4.0容器,我只是在下面的文章中的实例上安装了ruby 2.0和rails 4.0:

但还是从乘客那里得到了错误:

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/

您的乘客配置是指向ruby 1.8还是ruby 2.0? 另外,您是否有与ruby 2.0配合使用的passenger预发布版本

试着跑步
gem install passenger-pre
passenger-install-apache2-module
不带sudo,确保乘客配置行指向2.0,而不是1.8或1.9

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服务乘客重启
$>cat/var/log/debug-rvm.log
查看乘客流程开始时可用的所有环境变量

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

您可以运行:
哪个bundle
gem env
并发布结果吗?在阅读更多内容后,我相信使用
.ebextensions
可能是设置rvm的正确方法(而不是黑客攻击
/envvars.d/appenv
)。