我创建了一个新的 Rails API 应用程序。我正在尝试使用 postgres db 命令为应用程序创建数据库表
rake db:create:all
我收到此错误:
AM@~/Documents/RailsWS/iosprototypevendors >rake db:create:all --trace
rake aborted!
Valid types are [:development, :runtime], not nil
/usr/local/lib/ruby/site_ruby/1.8/rubygems/dependency.rb:52:in `initialize'
/Users/AM/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler- 1.2.0/lib/bundler/resolver.rb:371:in `new'
/Users/AM/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler- 1.2.0/lib/bundler/resolver.rb:371:in `search'
/Users/AM/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-
..............
经过一番谷歌搜索,我发现这可能与选择的 ruby 版本错误有关。
(我最近将我的操作系统升级到了 Mountain Lion,并且必须将我的 Rails 和 Ruby 版本升级到最新版本。为了让 Rails 正常运行,我经历了 8 个小时的痛苦。Rails 现在可以在我的系统上运行,但这是一个刚刚出现的差异上)。
另外
我还注意到,对于我系统上的不同rails应用程序,当我使用rails -v检查它们的版本时,rails的版本有时会显示为3.2.1,有时会显示为3.2.8,有时我会收到上述错误消息。
怎么会发生这种事? 这是我通过运行此命令得到的结果:
rvm info
ruby-1.9.3-p194:
system:
uname: "Darwin A-Ms-MacBook-Pro.local 12.1.0 Darwin Kernel Version 12.1.0: Tue Aug 14 13:29:55 PDT 2012; root:xnu-2050.9.2~1/RELEASE_X86_64 x86_64"
bash: "/bin/bash => GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin12)"
zsh: "/bin/zsh => zsh 4.3.11 (i386-apple-darwin12.0)"
rvm:
version: "rvm 1.15.8 (stable) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]"
updated: "1 day 22 hours 15 minutes 59 seconds ago"
ruby:
interpreter: "ruby"
version: "1.9.3p194"
date: "2012-04-20"
platform: "x86_64-darwin12.1.0"
patchlevel: "2012-04-20 revision 35410"
full_version: "ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.1.0]"
homes:
gem: "/Users/AM/.rvm/gems/ruby-1.9.3-p194"
ruby: "/Users/AM/.rvm/rubies/ruby-1.9.3-p194"
binaries:
ruby: "/Users/AM/.rvm/rubies/ruby-1.9.3-p194/bin/ruby"
irb: "/Users/AM/.rvm/rubies/ruby-1.9.3-p194/bin/irb"
gem: "/Users/AM/.rvm/rubies/ruby-1.9.3-p194/bin/gem"
rake: "/Users/AM/.rvm/gems/ruby-1.9.3-p194@global/bin/rake"
environment:
PATH: "/Users/AM/.rvm/gems/ruby-1.9.3-p194/bin:/Users/AM/.rvm/gems/ruby- 1.9.3-p194@global/bin:/Users/AM/.rvm/rubies/ruby-1.9.3- p194/bin:/Users/AM/.rvm/bin:/Users/AM/.rbenv/shims:/Users/AM/.rbenv/bin:/usr/local/bin:/usr/ local/sbin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/PostgreSQL/9.1/bin/"
GEM_HOME: "/Users/AM/.rvm/gems/ruby-1.9.3-p194"
GEM_PATH: "/Users/AM/.rvm/gems/ruby-1.9.3-p194:/Users/AM/.rvm/gems/ruby-1.9.3-p194@global"
MY_RUBY_HOME: "/Users/AM/.rvm/rubies/ruby-1.9.3-p194"
IRBRC: "/Users/AM/.rvm/rubies/ruby-1.9.3-p194/.irbrc"
RUBYOPT: ""
gemset: ""
如有任何帮助,我们将不胜感激
编辑
这是我运行命令时得到的结果
echo $PATH on my terminal
/Users/AM/.rbenv/shims:
/Users/AM/.rbenv/bin:
/usr/local/bin:/usr/local/sbin:
/usr/local/mysql/bin:
/Users/AM/.rvm/gems/ruby-1.9.3-p194/bin:
/Users/AM/.rvm/gems/ruby-1.9.3-p194@global/bin:
/Users/AM/.rvm/rubies/ruby-1.9.3-p194/bin:
/Users/AM/.rvm/bin:
/usr/local/bin:
/usr/bin:/usr/bin:
/bin:/usr/sbin:/sbin:
/usr/local/bin:
/Library/PostgreSQL/9.1/bin/
这些是我系统上的路径
所以我没有得到我正在寻找的答案。所以经过我自己的研究,我发现了这一点,(以防其他人也有这个问题)
Mountain Lion 附带 Postgresql 和原生 ruby 版本 1.8.7。现在的红宝石
版本是1.9.3。因此,一旦您升级到 Mountain Lion,请升级您的 Rails 版本
还有 ruby,并确保您运行的是正确的版本。
rvm是山狮上的版本管理工具,可以更新a并下载这些 为你。请参阅这篇文章这里
此外,如果您安装升级,您将拥有多个版本的 Ruby 和 Rails 你的电脑。因此,将正确的版本设置为默认版本变得很重要 系统。每次打开终端窗口时都必须通过命令执行此操作以检查 首先是版本:rails -v 和 ruby -v 或 rvm list
然后设置默认版本,如 rvm --default 1.9.3-p194 这将设置
该终端会话的默认值。如果您想要每个项目有更永久的设置,那么]
您必须在每个项目的根目录中创建一个 .rvmrc 文件并指定
供该项目使用的版本。再次查看上面链接的帖子。