Bundler在创建新的Rails应用程序时崩溃

时间:2013-05-22 19:43:14

标签: ruby-on-rails ubuntu bundler

版本:

  • 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 

1 个答案:

答案 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安装的系统范围的副本。)