看起来Phusion Passenger preloader或bundler正在调用kernel_require.rb的系统版本而不是kernel_require.rb的rbenv版本,而当我启动Rails 4.1应用程序时,bundler会抱怨RubyVersionMismatch
。这是我的本地开发盒,但我也有一个“本地”环境,可以使用Apache 2.2.27(macports)进行部署。
我按照说明完全删除了RVM,按照说明安装了rbenv然后安装了Ruby 2.1.2,Rails 4.1.5,Passenger,并且passenger-install-apache2-module
完成了。所有这些都在我的部署帐户中完成,然后我创建了一个空白测试应用程序当应用程序启动时,Apache错误日志会报告Bundler::RubyVersionMismatch
。
请注意,该应用程序似乎工作正常。
引用rbenv ruby的日志行:
log:1 /path/to/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.7.2/lib/bundler/definition.rb:385:in `validate_ruby!': Your Ruby version is 2.0.0, but your Gemfile specified 2.1.2 (Bundler::RubyVersionMismatch)
log:2 /path/to/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.7.2/lib/bundler.rb:117:in `setup'
log:3 /path/to/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.7.2/lib/bundler/setup.rb:17:in `<top (required)>'
引用mac系统ruby的日志行:
log:4 /System/Library/Frameworks/Ruby.framework/Versions/2.0/.../ruby/2.0.0/rubygems/.../kernel_require.rb:55:in `require'
log:5 /System/Library/Frameworks/Ruby.framework/Versions/2.0/.../ruby/2.0.0/rubygems/.../kernel_require.rb:55 in `require'
log:6 Pool2/SmartSpawner.h:298: Preloader for /path/to/my/deploy/rails/testing/current started on PID 33863
环境:
OSX 10.9.4
Apache 2.2.27 installed via macports to /opt/local/apache2 etc
rbenv local 2.1.2
rbenv global 2.1.2
rbenv which ruby /path/to/.rbenv/versions/2.1.2/bin/ruby
rbenv whence passenger 2.1.2
rails -v 4.1.5
bundler version 1.7.2
using mina v0.3.0, mina-rsync for deploy
apache的Passenger配置:
LoadModule passenger_module /path/to/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/passenger-4.0.50/buildout/apache2/mod_passenger.so
PassengerRoot /path/to/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/passenger-4.0.50
PassengerDefaultRuby /path/to/.rbenv/versions/2.1.2/bin/ruby
答案 0 :(得分:0)
我没有在部署帐户中设置rbenv local
或global
。
从部署帐户中删除了rbenv:
rm -rf ~/.rbenv
从.bash_profile
按照说明安装rbenv:
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
注销/登录
安装rbenv-build:
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
安装Ruby 2.1.2和Bundler:
rbenv install 2.1.2
gem install bundler
设置rbenv global
:
rbenv global 2.1.2
gem install passenger
passenger-install-apache2-module
将建议的乘客配置复制到我的本地/path/do/apache2/conf.d/passenger.conf
sudo apachectl restart
从本地登台服务器删除测试应用程序:
rm -rf /path/to/my/deploy/testing/*
返回开发帐户:
重新创建测试应用
rails new .... testing
cd测试
rake db:create
rake db:migrate
git init
git add .
git commit -am 'initial'
git push origin master
mina -v setup server=local
mina -v deploy server=local
tail -f /path/to/apache2/logs/error_log
我在我的本地服务器上点击了我的应用程序,而RubyVersionMismatch
已不在错误日志中,并且应用程序正常启动。