我使用命令
在Rails 3中创建Car模型rails generate model Car name:string id_str:string
但我得到了错误:
/home/XX/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:234:in `load': /home/XX/myapp/config/initializers/session_store.rb:3: syntax error, unexpected ':', expecting $end (SyntaxError)
...sion_store :cookie_store, key: '_myapp_session'
为什么?
我的session_store.rb
Myapp::Application.config.session_store :cookie_store, key: '_myapp_session'
我的session_store.rb
出了什么问题?
答案 0 :(得分:7)
当您尝试在Ruby<中使用Ruby 1.9.2 Hash语法时,通常会发生此错误。 1.9。
在Ruby 1.9.2中,以下代码完美地运行
Myapp::Application.config.session_store :cookie_store, key: '_myapp_session'
在Ruby< 1.9你必须使用
Myapp::Application.config.session_store :cookie_store, :key => '_myapp_session'
这很奇怪,因为您的堆栈跟踪引用了Ruby 1.9.2。你确定你使用Ruby 1.9.2运行生成器吗?
在任何情况下,您都可以将session_store.rb
文件转换为哈希火箭语法。如果它有效,则表示您没有使用Ruby 1.9.2并且粘贴了无效的错误消息。
答案 1 :(得分:3)
通过一些调试和游戏,这就是我最终做的事情:
for x in `gem list --no-versions`; do sudo gem uninstall $x; done
这会强制删除所有“旧”宝石。然后我继续验证gem环境以确认gem正在使用正确的ruby版本:
sudo gem env
遇到错误的原因是rails仍在尝试使用ruby 1.8,这会导致各种问题。
完成上述所有检查后:
sudo gem update --system
sudo gem install rubygems-update
sudo update_rubygems
这将确保您使用最新的宝石版本。然后:
sudo gem install rails
这将安装您需要的一切。我将所有gem命令作为sudo运行,以确保我的root安装已正确配置/设置。
你的最终宝石环境看起来应该是这样的:
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.13
- RUBY VERSION: 1.9.3 (2011-10-30 patchlevel 0) [x86_64-darwin10.8.0]
- INSTALLATION DIRECTORY: /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1
- RUBY EXECUTABLE: /usr/local/Cellar/ruby/1.9.3-p0/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/Cellar/ruby/1.9.3-p0/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-10
- GEM PATHS:
- /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1
答案 2 :(得分:1)
TL; DR :卸载然后重新安装railties gem
答案很长:
在您的项目目录中,如果您输入which rails
,您会看到什么?我的,我看到/usr/bin/rails
。这给了我一个线索,它使用了错误的rails
可执行文件。如果我查看我的$PATH
,我可以看到RVM的bin路径(/Users/ramon/.rvm/gems/ruby-1.9.3-p194/bin
)不包含rails
文件(关于如何删除它 - 我没有线索)。这一定是我的系统取代/usr/bin/rails
的原因。
查看Rails源代码,我看到railties
gem有rails
bin文件。我卸载了铁路(gem uninstall railties
),然后重新安装了它。 Voila - which rails
显示/Users/ramon/.rvm/gems/ruby-1.9.3-p194/bin/rails
答案 3 :(得分:0)
我能够通过将.rvmrc文件添加到我的应用程序来解决此问题。
echo "rvm ruby-2.0.0@rails32 --create" > .rvmrc
答案 4 :(得分:-1)
我通过删除〜/ .rvm目录并重新安装RVM解决了这个问题。
答案 5 :(得分:-2)
非常奇怪的问题,因为错误是自我描述
你在这个文件中有一些混乱,并且缺少结束语句
`load': /home/XX/myapp/config/initializers/session_store.rb:3