【问题标题】:heroku run rake db:migrate works correctly when typed into console, but not when run via a rake taskheroku run rake db:migrate 在输入控制台时可以正常工作,但在通过 rake 任务运行时不能正常工作
【发布时间】:2012-09-28 21:05:48
【问题描述】:

我有以下任务:

task :migrate_test => :environment do
   puts 'Running database migrations ...'
   puts `heroku run rake db:migrate --app my-app`
end

当我在控制台中运行heroku run rake db:migrate --app my-app 时,迁移成功进行。但是,当我运行rake migrate_test 时,我收到以下错误:


Running database migrations ...
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/dependency.rb:52:in `initialize': Valid types are [:development, :runtime], not nil (ArgumentError)
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/resolver.rb:371:in `new'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/resolver.rb:371:in `search'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/resolver.rb:361:in `gems_size'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/resolver.rb:159:in `start'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/resolver.rb:159:in `map'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/resolver.rb:159:in `start'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/resolver.rb:128:in `resolve'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/resolver.rb:127:in `catch'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/resolver.rb:127:in `resolve'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/definition.rb:182:in `resolve'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/definition.rb:113:in `specs'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/definition.rb:162:in `specs_for'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/definition.rb:151:in `requested_specs'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/environment.rb:23:in `requested_specs'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/runtime.rb:11:in `setup'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler.rb:116:in `setup'
    from /Users/Will/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.0/lib/bundler/setup.rb:17

我认为这与无法找到路径但无法找到解决方法的不同进程中的 rake 运行任务有关。

【问题讨论】:

    标签: ruby-on-rails heroku rake dbmigrate


    【解决方案1】:

    您的代码没有问题。见this issue on GitHub

    只需更新 ruby​​gems 和 RVM。甚至更好:使用rbenv

    【讨论】:

      【解决方案2】:

      解决方案是升级 Heroku 工具带。我仍然收到一个错误/Users/Will/.rvm/gems/ruby-1.9.3-p194@global/bin/rake: No such file or directory,但我猜工具带足够聪明,可以补偿。最新的工具带可以在这里找到:https://toolbelt.heroku.com/

      我还建议在 rake 任务中使用 exec ... 而不是 puts ...,因为您将能够实时看到进度。

      【讨论】:

        猜你喜欢
        • 2014-03-21
        • 1970-01-01
        • 1970-01-01
        • 2015-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多