【问题标题】:ruby on rails tutorial - rails server issueruby on rails 教程 - rails 服务器问题
【发布时间】:2014-07-06 07:28:46
【问题描述】:

我刚刚开始学习 Michael Hartl 的“Ruby on Rails 教程”。我创建了一个新项目:

rails new first_app

然后他让我把Gemfile从:

source 'https://rubygems.org'

# Use sqlite3 as the database for Active Record
gem 'sqlite3'

# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.1'

# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'

# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'

# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'

# Turbolinks makes following links in your web application faster.
# Read more: https://github.com/rails/turbolinks
gem 'turbolinks'

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 1.0.1'

group :doc do
  # bundle exec rake doc:rails generates the API under doc/api.
  gem 'sdoc', require: false
end

# Use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.1.2'

# Use unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano', group: :development

# Use debugger
# gem 'debugger', group: [:development, :test]

到这里:

source 'https://rubygems.org'
ruby '2.0.0'
#ruby-gemset=railstutorial_rails_4_0

gem 'rails', '4.0.5'

group :development do
  gem 'sqlite3', '1.3.8'
end

gem 'sass-rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.0.4'
gem 'jbuilder', '1.0.2'

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

现在当我尝试运行 rails server 时,我收到了这个错误:

PS C:\Users\Thomas\rails_projects\first_app> rails server
=> Booting WEBrick
=> Rails 4.0.5 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Exiting
C:/Users/Thomas/rails_projects/first_app/config/environments/development.rb:1:in `<top (required)>': undefined method `c
onfigure' for #<FirstApp::Application:0x2a2bae8> (NoMethodError)
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-4.0.5/lib/active_support/dependencies.rb
:229:in `require'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-4.0.5/lib/active_support/dependencies.rb
:229:in `block in require'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-4.0.5/lib/active_support/dependencies.rb
:214:in `load_dependency'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-4.0.5/lib/active_support/dependencies.rb
:229:in `require'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/engine.rb:591:in `block (2 le
vels) in <class:Engine>'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/engine.rb:590:in `each'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/engine.rb:590:in `block in <c
lass:Engine>'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/initializable.rb:30:in `insta
nce_exec'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/initializable.rb:30:in `run'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/initializable.rb:55:in `block
 in run_initializers'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/tsort.rb:150:in `block in tsort_each'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/tsort.rb:183:in `block (2 levels) in each_strongly_connected_com
ponent'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/tsort.rb:210:in `block (2 levels) in each_strongly_connected_com
ponent_from'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/tsort.rb:219:in `each_strongly_connected_component_from'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/tsort.rb:209:in `block in each_strongly_connected_component_from
'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/initializable.rb:44:in `each'

        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/initializable.rb:44:in `tsort
_each_child'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/tsort.rb:203:in `each_strongly_connected_component_from'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/tsort.rb:182:in `block in each_strongly_connected_component'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/tsort.rb:180:in `each'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/tsort.rb:180:in `each_strongly_connected_component'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/tsort.rb:148:in `tsort_each'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/initializable.rb:54:in `run_i
nitializers'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/application.rb:215:in `initia
lize!'
        from C:/Users/Thomas/rails_projects/first_app/config/environment.rb:5:in `<top (required)>'
        from C:/Users/Thomas/rails_projects/first_app/config.ru:3:in `require'
        from C:/Users/Thomas/rails_projects/first_app/config.ru:3:in `block in <main>'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize'
        from C:/Users/Thomas/rails_projects/first_app/config.ru:in `new'
        from C:/Users/Thomas/rails_projects/first_app/config.ru:in `<main>'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:49:in `eval'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:49:in `new_from_string'

        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:40:in `parse_file'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:277:in `build_app_and_op
tions_from_config'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:199:in `app'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/commands/server.rb:48:in `app
'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:314:in `wrapped_app'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/commands/server.rb:75:in `sta
rt'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/commands.rb:76:in `block in <
top (required)>'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/commands.rb:71:in `tap'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.5/lib/rails/commands.rb:71:in `<top (requ
ired)>'
        from bin/rails:4:in `require'
        from bin/rails:4:in `<main>'

我知道更改Gemfile 会发生错误,因为它在我更改它之前就可以工作。我想尽可能地关注迈克尔。唯一不同的是我使用的是 Ruby 1.9.3,而他使用的是 Ruby 2.0,尽管在书中他说如果不使用 2,只需在我所做的 Gemfile 中更改即可。

【问题讨论】:

  • 你没有更改 gemfile 中的 ruby​​...
  • 对不起,我在这里是个菜鸟,我确实更改了它,只是不小心粘贴了旧代码。

标签: ruby-on-rails ruby ruby-on-rails-4 railstutorial.org


【解决方案1】:

您是否尝试过完全删除红宝石线?我的 gemfile 中通常没有这一行

【讨论】:

  • 您是否重新运行了 bundle install,然后尝试了 bundle exec rails s
  • 你的 development.rb 文件的前 2 行还有什么?
  • Rails.application.configure 做 config.cache_classes = false
  • 是的,我尝试了捆绑更新,捆绑安装。我刚刚尝试了 bundle exec rails s,但又遇到了同样的错误
  • Rails.application.configure 做
【解决方案2】:

这是您收到的错误:

C:/Users/Thomas/rails_projects/first_app/config/environments/development.rb:1:in `<top (required)>': undefined method `configure' for #<FirstApp::Application:0x2a2bae8>

这基本上意味着您在文件/config/environments/development.rbline 1 上有错误

--

您提到更改 Gemfile 时错误会消失。我怀疑问题是你的系统上没有安装Ruby 1.9.3,导致 Rails 混乱并阻止它加载

我的建议是在您的系统上(重新)安装 Ruby 1.9.3Ruby 2.0.0

【讨论】:

  • 感谢 Rich,我使用了铁路站场快速安装程序。我已经重新安装了 ruby​​ 几次,但仍然没有运气。当我输入 ruby​​ -v 时,它说 ruby​​ 1.9.3 已安装
  • 嗯,好的,您能详细说明您的Gemfile 中的哪一行您收到了错误吗?这将是一个很大的帮助
  • 另外,您使用的依赖项是否依赖于 Ruby 2.0?
  • 我不知道如何找到它。当我点击 Rails 服务器时,我看到两个 ruby​​ 项目在任务管理器中弹出,然后它们消失了。一切似乎都在运行,直到 Rails 服务器。我觉得存在依赖关系,所有的 gem 都是版本特定的。即使他推荐 1.9.3 也可能只是切换到版本 2,然后放 2 个代码哈哈。
  • 你的 Gemfile 呢?哪一行允许你运行服务器?
【解决方案3】:

您需要更改 app/config/initializers/development.rb

Rails.application.configure do

YourApp::Application.configure do

但你会看到错误:

内部服务器错误您必须在应用的配置中设置 config.secret_key_base

要解决这个问题,你应该生成一个 rnd 密钥

$ rake secret

然后创建文件config/initializers/secret_token.rb并放入这个文件中

YourApp::Application.config.secret_key_base = 'YOUR_SECRET_KEY'

之前生成 YOUR_SECRET_KEY 的位置,一切正常。

原因是因为存储密钥的新约定(从 Rails 4.0 升级到 Rails 4.1 docs

附:注意文件 config/secrets.yml

【讨论】:

    【解决方案4】:

    您在 Gemfile 的开头声明了 ruby​​ '2.0.0',但您使用的是 1.9.3,因此在尝试检测它时会失败。更改为 ruby​​ '1.9.3'

    此外,您可能需要运行 bundle 才能安装 gem。

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题。

      检查你的rails版本

      导轨-v

      然后在您的应用更改的 Gemfile 中确保 您拥有符合以下标准的导轨版本 在我的情况下,您的计算机上有一个:

      gem 'rails', '4.1.1'

      现在终于运行了

      捆绑更新 捆绑安装

      现在您应该可以运行您的服务器了。

      【讨论】: