启动Rails服务器时出现语法错误

4
我最近开始处理一个从Github上克隆下来的项目。
每次我尝试启动Rails服务器时,都会出现以下错误:
/Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:245:in `load': /Users/thomas/Projects/BillingMiddleware/config/initializers/session_store.rb:3: syntax error, unexpected ':', expecting $end (SyntaxError) ...sion_store :cookie_store, key: '_BillingMiddleware_session' ^ from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:245:in `load' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:236:in `load_dependency' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:245:in `load' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/engine.rb:588 from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/engine.rb:587:in `each' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/engine.rb:587 from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `instance_exec' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `run' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/initializable.rb:55:in `run_initializers' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `each' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `run_initializers' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/application.rb:136:in `initialize!' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/railtie/configurable.rb:30:in `send' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/railtie/configurable.rb:30:in `method_missing' from /Users/thomas/Projects/BillingMiddleware/config/environment.rb:5 from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:236:in `load_dependency' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require' from /Users/thomas/Projects/BillingMiddleware/config.ru:4 from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize' from /Users/thomas/Projects/BillingMiddleware/config.ru:1:in `new' from /Users/thomas/Projects/BillingMiddleware/config.ru:1
我的同事也在这个项目上工作,似乎没有任何启动服务器的问题。他正在运行与我相同版本的ruby、rails和WeBrick。
我已经尝试将语法从key:更改为:key =>,但这不应该是问题,因为我正在运行ruby版本1.9.3。如果我无论如何进行更改,我会得到不同的错误信息:
/Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:245:in `load': /Users/thomas/Projects/BillingMiddleware/config/initializers/wrap_parameters.rb:8: syntax error, unexpected ':', expecting kEND (SyntaxError) wrap_parameters format: [:json] ^ from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:245:in `load' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:236:in `load_dependency' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:245:in `load' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/engine.rb:588 from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/engine.rb:587:in `each' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/engine.rb:587 from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `instance_exec' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `run' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/initializable.rb:55:in `run_initializers' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `each' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `run_initializers' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/application.rb:136:in `initialize!' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/railtie/configurable.rb:30:in `send' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/railtie/configurable.rb:30:in `method_missing' from /Users/thomas/Projects/BillingMiddleware/config/environment.rb:5 from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:236:in `load_dependency' from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require' from /Users/thomas/Projects/BillingMiddleware/config.ru:4 from /Users/thomas/.rvm/gems/ruby-1.9.3-p194/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval' from /Users
我已经尝试完全删除并重新安装了多次rvm、ruby和rails,但都没有成功。我还尝试运行bundle install,但也没有帮助。
有人知道出了什么问题吗?
谢谢。
2个回答

5
尝试将哈希值更改为:key => :value语法。同样的错误和修复方法在Rails 3.1 Deployment to Heroku Error中讨论。 建议的临时解决方案是: config/initializers/session_store.rb
App::Application.config.session_store :cookie_store, :key => '_BillingMiddleware_session'

config/initializers/wrap_parameters.rb

ActionController::Base.wrap_parameters :format => [:json]

这似乎是问题的一个快速解决方法。我只是想知道为什么它在运行Ruby 1.9.3时会抱怨哈希语法? - Malc
虽然已经将大量的代码提交到项目中,但是新语法似乎已经生效。如果重新更改为旧的语法,对于其他项目成员而言就没有意义了。还有其他什么值得尝试的吗?当我运行 ruby -v 时,我的电脑显示: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.3.0]。 我使用 RVM,当我运行 rvm list rubies 时,只会得到 =* ruby-1.9.3-p194 [ x86_64 ]。我也运行了 rvm use ruby-1.9.3-p194,但这并没有帮助解决问题。 - Malc
你在应用程序的其他部分也遇到了同样的错误吗?我认为这只是在初始化期间出现的问题,不会影响应用程序的其余部分。 - Anil
1
最初确实是这种情况,但是通过快速修复的实施,我注意到该问题影响了应用程序中在服务器上运行的文件。我的环境中还有其他地方可以检查是否默认回退到旧版本的Ruby吗? - Malc
我已经点赞了你的问题,因为它对可能遇到相同问题的其他人很有用。谢谢。 - Anil
显示剩余2条评论

1

看起来是在你修复那一行之后的另一行使用了哈希语法。请检查config/intializers/wrap_parameters.rb文件,我想知道这个项目是否已经设置了标志以“不”使用新语法?


我已经修改了两个,不使用新语法,但似乎在项目中找到更多使用新语法的示例,并对它们进行抱怨。该项目是由我的同事自己创建的,因此我相对确定它不会有一个标志来不使用新语法。他似乎能够在自己的端口启动服务器而没有问题。 - Malc
你的 ruby -v 显示什么?你是否重新启动了控制台选项卡,可能出现了一些奇怪的情况。而且,你是在 Lion 上还是在 Snow Leopard 上? - pjammer
当我运行 ruby -v 时,它返回 ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.3.0]。每次我执行更新或安装操作后,我都会重新启动控制台。是的,我们两台计算机都在运行10.7.3。 - Malc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接