【问题标题】:Why can't I start the Rails server?为什么我无法启动 Rails 服务器?
【发布时间】:2017-02-15 21:12:28
【问题描述】:

这是我的控制台日志:

Last login: Thu Feb 9 14:24:17 on ttys000
leon$ cd Sites
leon$ ll
total 16
drwxr-xr-x 4 501 20 136 6 Feb 15:15 .
drwxr-xr-x+ 22 501 20 748 9 Feb 14:24 ..
-rw-r--r--@ 1 501 20 6148 9 Feb 14:12 .DS_Store
drwxr-xr-x 19 501 20 646 6 Feb 15:15 simple_cms
leon$ cd simple_cms
leon$ ll
total 80
drwxr-xr-x 19 501 20 646 6 Feb 15:15 .
drwxr-xr-x 4 501 20 136 6 Feb 15:15 ..
-rw-r--r--@ 1 501 20 8196 9 Feb 13:54 .DS_Store
-rw-r--r-- 1 501 20 468 6 Feb 15:12 .gitignore
-rw-r--r-- 1 501 20 1899 6 Feb 15:12 Gemfile
-rw-r--r-- 1 501 20 4280 6 Feb 15:12 Gemfile.lock
-rw-r--r-- 1 501 20 374 6 Feb 15:12 README.md
-rw-r--r-- 1 501 20 227 6 Feb 15:12 Rakefile
drwxr-xr-x 11 501 20 374 6 Feb 16:39 app
drwxr-xr-x 8 501 20 272 6 Feb 15:12 bin
drwxr-xr-x 15 501 20 510 6 Feb 16:22 config
-rw-r--r-- 1 501 20 130 6 Feb 15:12 config.ru
drwxr-xr-x 3 501 20 102 6 Feb 15:12 db
drwxr-xr-x 4 501 20 136 6 Feb 15:12 lib
drwxr-xr-x 5 501 20 170 9 Feb 14:12 log
drwxr-xr-x 11 501 20 374 6 Feb 16:39 public
drwxr-xr-x 9 501 20 306 6 Feb 15:12 test
drwxr-xr-x 8 501 20 272 6 Feb 16:03 tmp
drwxr-xr-x 4 501 20 136 6 Feb 15:40 vendor
leon$ rails server
/Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:51: warning: constant ::Fixnum is deprecated
/Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:52: warning: constant ::Bignum is deprecated
=> Booting Puma
=> Rails 5.0.1 application starting in development on http://localhost:3000
=> Run rails server -h for more startup options
/Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/core_ext/numeric/conversions.rb:138: warning: constant ::Fixnum is deprecated
Exiting
/Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/actionpack-5.0.1/lib/action_dispatch/routing/mapper.rb:78:in check_via': You should not use thematchmethod in your router without specifying an HTTP method. (ArgumentError) If you want to expose your action to both GET and POST, addvia: [:get, :post]option. If you want to expose your action to GET, usegetin the router: Instead of: match "controller#action" Do: get "controller#action" from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/actionpack-5.0.1/lib/action_dispatch/routing/mapper.rb:1902:inmap_match'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/actionpack-5.0.1/lib/action_dispatch/routing/mapper.rb:1599:in match' from /Users/leon/Sites/simple_cms/config/routes.rb:5:inblock in <top (required)>'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/actionpack-5.0.1/lib/action_dispatch/routing/route_set.rb:389:in instance_exec' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/actionpack-5.0.1/lib/action_dispatch/routing/route_set.rb:389:ineval_block'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/actionpack-5.0.1/lib/action_dispatch/routing/route_set.rb:371:in draw' from /Users/leon/Sites/simple_cms/config/routes.rb:1:in<top (required)>'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in load' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:inblock in load'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:259:in load_dependency' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:inload'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:40:in block in load_paths' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:40:ineach'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:40:in load_paths' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:16:inreload!'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:26:in block in updater' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/file_update_checker.rb:77:inexecute'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:27:in updater' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:7:inexecute_if_updated'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/application/finisher.rb:119:in block in <module:Finisher>' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/initializable.rb:30:ininstance_exec'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/initializable.rb:30:in run' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/initializable.rb:55:inblock in run_initializers'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/2.4.0/tsort.rb:228:in block in tsort_each' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/2.4.0/tsort.rb:350:inblock (2 levels) in each_strongly_connected_component'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/2.4.0/tsort.rb:431:in each_strongly_connected_component_from' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/2.4.0/tsort.rb:349:inblock in each_strongly_connected_component'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/2.4.0/tsort.rb:347:in each' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/2.4.0/tsort.rb:347:incall'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/2.4.0/tsort.rb:347:in each_strongly_connected_component' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/2.4.0/tsort.rb:226:intsort_each'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/2.4.0/tsort.rb:205:in tsort_each' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/initializable.rb:54:inrun_initializers'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/application.rb:352:in initialize!' from /Users/leon/Sites/simple_cms/config/environment.rb:5:in<top (required)>'
from /Users/leon/Sites/simple_cms/config.ru:3:in require_relative' from /Users/leon/Sites/simple_cms/config.ru:3:inblock in
'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rack-2.0.1/lib/rack/builder.rb:55:in instance_eval' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rack-2.0.1/lib/rack/builder.rb:55:ininitialize'
from /Users/leon/Sites/simple_cms/config.ru:in new' from /Users/leon/Sites/simple_cms/config.ru:in'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rack-2.0.1/lib/rack/builder.rb:49:in eval' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rack-2.0.1/lib/rack/builder.rb:49:innew_from_string'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rack-2.0.1/lib/rack/builder.rb:40:in parse_file' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rack-2.0.1/lib/rack/server.rb:318:inbuild_app_and_options_from_config'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rack-2.0.1/lib/rack/server.rb:218:in app' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/server.rb:59:inapp'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rack-2.0.1/lib/rack/server.rb:353:in wrapped_app' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/server.rb:124:inlog_to_stdout'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/server.rb:77:in start' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:90:inblock in server'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:85:in tap' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:85:inserver'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in run_command!' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands.rb:18:in<top (required)>'
from /Users/leon/Sites/simple_cms/bin/rails:9:in require' from /Users/leon/Sites/simple_cms/bin/rails:9:in<top (required)>'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.1/lib/spring/client/rails.rb:28:in load' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.1/lib/spring/client/rails.rb:28:incall'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.1/lib/spring/client/command.rb:7:in call' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.1/lib/spring/client.rb:30:inrun'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.1/bin/spring:49:in <top (required)>' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.1/lib/spring/binstub.rb:31:inload'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.1/lib/spring/binstub.rb:31:in <top (required)>' from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:inrequire'
from /Users/leon/.rbenv/versions/2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in require' from /Users/leon/Sites/simple_cms/bin/spring:15:in<top (required)>'
from bin/rails:3:in load' from bin/rails:3:in'
leon$

由于在此处发布代码时遇到问题,我也将其发布在 GitHub 上:https://github.com/rails/rails/issues/28012

我正在关注 Lynda 教程,但由于此错误,我无法超越设置 Ruby on Rails。

【问题讨论】:

  • 还有一位贡献者在我的 routes.rb 的评论中发布了“后备匹配路线”。请告知我应该如何正确构建我的路线。rb 再次感谢。
  • 选择代码并点击代码块图标。
  • 另外,FWIW,您可以粘贴代码,突出显示它,然后单击编辑器中的代码按钮(看起来像 {})...
  • 另外,如果您也不想按代码按钮,Ctrl-K 也可以。

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

从您的堆栈中,您可以看到在第 5 行的 simple_cms/config/routes.rb 中有一个错误。

在日志的顶部你读到了原因:

你不应该在你的路由器中使用 match 方法而不指定一个 HTTP 方法。

(ArgumentError) 如果你想将你的动作暴露给两者 GET 和 POST,添加 via: [:get, :post] 选项。

如果你想暴露你的 对 GET 的操作,在路由器中使用 get:

代替:匹配 “controller#action” 做:得到“controller#action”

您可以在Official Documentation 中找到有关如何构建routes.rb 文件的更多文档。

【讨论】:

  • 在实施 get 之后似乎解决了我的问题。多谢了。我已经在这里待了 2 天!
  • @lee 如果这解决了您的问题,您应该将其标记为已接受的答案。帮助找到它的其他人。欢迎使用 StackOverflow。
  • @lee:要接受答案,请单击答案旁边的刻度线,使其变为绿色。这就是我们感谢 Stack Overflow 上人们的方式。
猜你喜欢
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 2016-05-06
  • 2011-06-19
相关资源
最近更新 更多