版本:
Ruby 1.9.3p194
Rails 3.2.13
Bundler 1.3.5
当我运行rails new new_app
时,我得到:
run bundle install
/var/lib/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/ui.rb:36:in `initialize': undefined method `[]' for #<Thor::Shell::Color:0x00000002b25708> (NoMethodError)
from /usr/lib/ruby/vendor_ruby/bundler/cli.rb:12:in `new'
from /usr/lib/ruby/vendor_ruby/bundler/cli.rb:12:in `initialize'
from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor.rb:263:in `new'
from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor.rb:263:in `dispatch'
from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor/base.rb:386:in `start'
from /var/lib/gems/1.9.1/gems/bundler-1.3.5/bin/bundle:20:in `block in <main>'
from /var/lib/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/friendly_errors.rb:3:in `with_friendly_errors'
from /var/lib/gems/1.9.1/gems/bundler-1.3.5/bin/bundle:20:in `<main>'
ui.rb
中的相关代码是:
def initialize(options = {})
if options["no-color"] || !STDOUT.tty?
Thor::Base.shell = Thor::Shell::Basic
end
@shell = Thor::Base.shell.new
@level = ENV['DEBUG'] ? "debug" : "info"
end
答案 0 :(得分:3)
我设法自己解决了这个问题。上面提到的MrYoshiji帖子表明Ruby和Rails之间存在不兼容性。这基本上就是问题 - 它是版本不兼容,最好通过使用RVM来安装Ruby,Rails等的本地(用户特定)副本来解决。
但我已经安装了RVM。还有一个问题需要解决--RVM没有作为一个函数运行,您可以通过将终端设置为在启动时加载/etc/profile
来解决。如何在gnome-terminal中执行此操作在RVM站点here上进行了解释。
但是,这对我来说不是一个好的解决方案,因为它阻止我的本地bash文件(例如~/.bash_aliases
)加载。因此,我没有更改RVM网站上显示的终端设置,而是打开~/.bashrc
并添加了行source ~/.rvm/scripts/rvm
。重新启动终端后,一切正常 - 正在使用正确的Ruby和Rails副本,当我尝试创建新的Rails应用程序时,我不再遇到该错误(可能是因为我现在正在使用本地副本宝石,而不是通过APT安装的系统范围的副本。)