我已经为这个Sinatra应用程序的登台服务器战斗了两天。我变得非常沮丧。最新的坑洞是乘客提出的Ruby错误:
没有这样的文件要加载 - 机架
nginx.conf文件显示我们正在使用的Ruby以及Passenger所在的位置:
passenger_root /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5; passenger_ruby /usr/local/rvm/rubies/ruby-1.9.2-p180/bin/ruby;
好的,这对我们来说就是Ruby 1.9.2。
vhost配置包括:
root /var/www/staging-proweb/current/rack/public; passenger_enabled on; rack_env staging;
并且rackup文件包含:
require 'rubygems' require 'sinatra' require 'myapp1.rb' run Sinatra::Application
然后将我们发送到myapp1.rb
文件,其中包含
require 'rubygems' require 'rack' require 'sinatra'
......我认为sinatra要求就是要求机架。
宝石在那里:
~$ which ruby /usr/local/rvm/rubies/ruby-1.9.2-p180/bin/ruby ~$ gem list rack *** LOCAL GEMS *** rack (1.2.2) rack-flash (0.1.1)
错误似乎位于RVM目录中的一个文件中,从堆栈跟踪的前三行判断:
0 /usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb 36 in `require' 1 /usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb 36 in `require' 2 /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/rack/application_spawner.rb 219 in `load_rack_app'
接下来我应该尝试什么?我在这一点上很难过。
答案 0 :(得分:3)
问题似乎是passenger_ruby
配置值。 RVM提供了一个包装器来为该Ruby(包括gem)设置适当的环境,因此passenger_ruby
行应该已经读取
passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.2-p180/ruby;
有了这个,我们似乎已经开始运作了。