【发布时间】:2015-12-16 18:57:30
【问题描述】:
尝试运行 ruby 脚本 ruby dispatch.fcgi 时出现错误
/pathtorvm/.rvm/rubies/ruby-2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- fcgi (LoadError)
from /pathtorvm/.rvm/rubies/ruby-2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from dispatch.fcgi:8:in `<main>'
我正在尝试关注 Dreamhost 的 Rvm/Rails 安装指南以及多篇博文:
Configuring Rails projects with FastCGI for Dreamhost shared hosting
RAILS 4.0.0 WITH RUBY 2.0 ON A DREAMHOST SHARED SERVER
我正在成功使用 rvm => 1.26.11,ruby => 2.2.0,rails 4.2.2,甚至尝试过 ruby 2.0.0。我试图将我所有的 env_vars 指向正确的位置,但我不能 100% 确定 $PATH var 设置正确。
我正在使用 bundler gem 来安装我的 gem,并在 Gemfile 中包含 require 'fcgi'。我还删除了 Gemfile.lock 文件并尝试再次运行 bundle install 。我认为也许 ruby-2.2.0 引起了问题,但 ruby-2.0.0 产生了相同的结果 & RAILS 4.0.0 WITH RUBY 2.0 ON A DREAMHOST SHARED SERVER 清楚地表明它与 ruby-2.0.0 一起使用
dispatch.fcgi
#!/pathtorvm/.rvm/rubies/ruby-2.2.0/bin/ruby
# Dreamhost clears environment variables when calling dispatch.fcgi, set again
ENV['RAILS_ENV'] = 'production'
ENV['HOME'] ||= `echo ~`.strip
ENV['GEM_HOME'] = File.expand_path('~/.gems')
ENV['GEM_PATH'] = File.expand_path('~/.gems')
require 'fcgi'
require '/pathtoapplication'sfile/config/boot.rb'
require '/pathtoapplication'sfile/config/environment.rb'
class Rack::PathInfoRewriter
def initialize(app)
@app = app
end
def call(env)
env.delete('SCRIPT_NAME')
parts = env['REQUEST_URI'].split('?')
env['PATH_INFO'] = parts[0]
env['QUERY_STRING'] = parts[1].to_s
@app.call(env)
end
end
#Rack::Handler::FastCGI.run Rack::PathInfoRewriter.new(ApplicationNamefoundin~../config/application.rb::Application)
【问题讨论】:
-
您是否尝试过对 .rb 文件使用
load而不是require? -
尝试给出 dispatch.fcgi:8:in `load': cannot load such file -- fcgi (LoadError) from dispatch.fcgi:8:in `
' -
听起来很蠢,但是……看来
.rb文件的路径有问题。如果boot.rb和environment.rb位于脚本所在位置的文件夹中,请尝试使用./config/yourrbfilehere.rb作为路径,并使用load。祝你好运。 -
不,这正是我的想法
-
好的,请原谅我这个愚蠢的假设:您是否尝试安装 gem
fcgi?你的Gemfile里有吗?
标签: ruby-on-rails ruby rubygems fastcgi dreamhost