2014-11-21 67 views
1

我无法启动服务器我的应用程序,因为下面的错误后,使用错误的红宝石版本的独角兽崩溃:因为部署

/home/blabla/.rvm/gems/ruby-2.1.0/bin/ruby/2.1.0/bin/unicorn", "-E", "beta", "-c", "/var/www/testenvir/releases/20141117005244/config/unicorn.rb", "-D", {16=>#<Kgio::UNIXServer:fd 16>}] (in /var/www/testenvir/releases/20141121053734) 

/home/blabla/.rvm/gems/[email protected]/gems/bundler-1.6.3/lib/bundler/definition.rb:390:in `validate_ruby!': Your Ruby version is 2.1.0, but your Gemfile specified 2.0.0 (Bundler::RubyVersionMismatch) 

错误是自descritive,但我不知道如何解决这个问题,因为我有我的Gemfile脚本:

ruby '2.0.0' 

在我Capistrano的部署脚本:

set :rvm_ruby_string, 'ruby-2.0.0-p353' 
set :bundle_dir, "/home/blabla/.rvm/gems/ruby-2.0.0-p353/bin" 

在我的服务器,我把我的环境变量如下:

rvm use ruby-2.0.0-p353 

和env RAILS_ENV的输出= testenvir捆绑高管红宝石-v是:

ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux] 

我可以通过连接验证

=* ruby-2.0.0-p353 [ x86_64 ] 
    ruby-2.1.0 [ x86_64 ] 

最后我崩溃命令在试图推出以下命令眼睛脚本定义:即rvm list产生新的终端:

bundle exec unicorn -E #{RAILS_ENV} -C#{working_dir}/config/unicorn.rb -D 

我证实#{working_directory的}和#{RAILS_ENV}是正确的,所以我想了解硬编码(作为第一步骤)中,bundleunicorn的路径,因为它们是一个从2.1采取.0而不是2.0.0-p353(我得到的错误,在unicorn.log ...),但它没有工作(坠毁与另一个错误...)

我也检查了$ PATH, $ GEM_HOME,$ GEM_PATH和$ RUBY_VERSION,它们都指向2.0.0-p353版本。事实上,我做了一个printenv,并寻找一个可能的变量,分配给它的ruby-2.1.0,但是我找不到任何变量!

我检查了我的应用程序的所有文件,但是我在某处分配了ruby-2.1.0,但是我没有找到任何相关的参考。他们都被设置为ruby-2.0.0-p353。

我的问题是:

有没有,我很想念我应该在哪里指定我想要的红宝石版本另一个地方?我应该如何在服务器上设置我的ruby版本,而不是我做了什么?

谢谢!

UPDATE:

rvm current 
ruby-2.0.0-p353 

rvm gemset list 
gemsets for ruby-2.0.0-p353 (found in /home/deployer/.rvm/gems/ruby-2.0.0-p353) 
=> (default) 
    global 
+0

请输出'bundle exec ruby​​ -V' – 2014-11-21 14:31:47

+0

ruby​​ 2.0.0p353(2013-11-22 revision 43784)[x86_64-linux]。我编辑了这个问题来添加这个输出 – user3442206 2014-11-21 14:36:55

+0

ok然后'bundle exec哪个独角兽' – 2014-11-21 14:40:38

回答

0

晚了一点,但能帮助别人谁遇到同样的问题。 I'm使用滚动重启,什么帮助我是这样的评论,我有我的config/unicorn.rb文件

# If you roll off old code from your app servers (i.e. the way chef, capistrano, 
    # basically anyone does it) you need to make sure Unicorn is not looking for 
    # the Gemfile it was originally started with. It's really important that after 
    # change you stop/start unicorn after first redeploy. 
    # After that the "before_exec" block will go in memory and 
    # wait for the next deploy! 
    before_exec do |server| 
     ENV['BUNDLE_GEMFILE'] = "#{root}/Gemfile" 
    end 

于是我跑了

/etc/init.d/unicorn-myapp停止

/etc/init。d /独角兽-myapp开始

和独角兽拿起了新的红宝石版本。

相关问题