【发布时间】:2016-02-26 04:46:21
【问题描述】:
当我尝试通过rackup 命令启动我的 Sinatra 应用程序时,我收到此错误:
/home/matteog/Scrivania/ruby_ws/config.ru:1:in `block in <main>': undefined method `require' for #<Rack::Builder:0x000000027d4e50> (NoMethodError)
from /home/matteog/.rvm/gems/ruby-2.1.2/gems/rack-1.6.4/lib/rack/builder.rb:55:in `instance_eval'
from /home/matteog/.rvm/gems/ruby-2.1.2/gems/rack-1.6.4/lib/rack/builder.rb:55:in `initialize'
from /home/matteog/Scrivania/ruby_ws/config.ru:in `new'
from /home/matteog/Scrivania/ruby_ws/config.ru:in `<main>'
from /home/matteog/.rvm/gems/ruby-2.1.2/gems/rack-1.6.4/lib/rack/builder.rb:49:in `eval'
from /home/matteog/.rvm/gems/ruby-2.1.2/gems/rack-1.6.4/lib/rack/builder.rb:49:in `new_from_string'
from /home/matteog/.rvm/gems/ruby-2.1.2/gems/rack-1.6.4/lib/rack/builder.rb:40:in `parse_file'
from /home/matteog/.rvm/gems/ruby-2.1.2/gems/rack-1.6.4/lib/rack/server.rb:299:in `build_app_and_options_from_config'
from /home/matteog/.rvm/gems/ruby-2.1.2/gems/rack-1.6.4/lib/rack/server.rb:208:in `app'
from /home/matteog/.rvm/gems/ruby-2.1.2/gems/rack-1.6.4/lib/rack/server.rb:336:in `wrapped_app'
from /home/matteog/.rvm/gems/ruby-2.1.2/gems/rack-1.6.4/lib/rack/server.rb:272:in `start'
from /home/matteog/.rvm/gems/ruby-2.1.2/gems/rack-1.6.4/lib/rack/server.rb:147:in `start'
from /home/matteog/.rvm/gems/ruby-2.1.2/gems/rack-1.6.4/bin/rackup:4:in `<top (required)>'
from /home/matteog/.rvm/gems/ruby-2.1.2/bin/rackup:23:in `load'
from /home/matteog/.rvm/gems/ruby-2.1.2/bin/rackup:23:in `<main>'
from /home/matteog/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `eval'
from /home/matteog/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `<main>'
但是当我使用ruby helloworld.rb 时我没有问题。我的config.ru很简单:
require 'helloworld'
run Sinatra::Application
此外,我在rackup 之前成功执行了bundle install,并使用了这个 Gemfile(省略了输出):
source 'https://rubygems.org'
ruby '2.1.2'
gem 'sinatra', '>= 1.4.5', '~> 1.4'
gem 'sinatra-contrib', '>= 1.4.2', '~> 1.4'
gem 'dm-core', '>= 1.2.0', '~> 1.2'
gem 'dm-sqlite-adapter', '>= 1.2.0', '~> 1.2'
gem 'dm-validations', '>= 1.2.0', '~> 1.2'
gem 'dm-timestamps', '>= 1.2.0', '~> 1.2'
gem 'dm-migrations', '>= 1.2.0', '~> 1.2'
group :development, :test do
gem 'timecop'
gem 'simplecov'
gem 'minitest'
end
【问题讨论】:
-
您能否检查
Gemfile.lock以查看使用了哪个版本的rackgem?尝试将gem 'rack', '~> 1.6.4'添加到Gemfile,也许你有一个旧的错误版本。 -
另外,试试
bundle exec rackup config.ru -
我认为不是旧版本的问题,因为我已经在使用 rack 1.6.4。但可以肯定的是,我无论如何都尝试了你的建议,但没有运气......
-
很奇怪。还有更多的堆栈跟踪还是只有那一行?你能不能试试不同的 ruby 版本?
-
我用完整的堆栈跟踪更新了问题