【问题标题】:How to launch rake tasks in a different rails app with rvm?如何使用 rvm 在不同的 rails 应用程序中启动 rake 任务?
【发布时间】:2014-09-12 09:01:35
【问题描述】:

我有一个 Rails 应用程序,可用于设置另一个 Rails 应用程序。 我已经使用 system() 完成了 git pulls 和 unzips,但我在设置第二个应用程序时遇到了问题:

system 'cd ~/path/to/second_app/; bundle install'
system 'cd ~/path/to/second_app/; rake db:automigrate RAILS_ENV=production'

bundle install 和 rake 似乎都使用了第一个应用程序代码。 我什至尝试通过将整个路径传递给它来启动特定的 rvm rake:

system 'cd ~/path/to/second_app/; ~/.rvm/wrappers/ruby-2.1.2@second_app/rake db:automigrate RAILS_ENV=production

之后我得到

 NameError: uninitialized constant ExceptionNotification

在标准登录 shell 执行后不存在;我使用 ExceptionNotification 通过电子邮件发送错误通知。

 rake db:automigrate RAILS_ENV=production

有没有办法做到这一点?

【问题讨论】:

    标签: ruby-on-rails ruby rake rvm


    【解决方案1】:

    整个路径肯定可以工作

    system 'cd ~/path/to/second_app/; ~/.rvm/wrappers/ruby-2.1.2@second_app/bundle install; ~/.rvm/wrappers/ruby-2.1.2@second_app/rake db:automigrate RAILS_ENV=production'
    

    请描述这行之后有什么问题?

    【讨论】:

    • 我已在主要问题中添加了详细信息。
    【解决方案2】:

    由于这是我们团队的一项优先任务,因此我使用 net/ssh gem 对它做了一个丑陋的破解:

    Net::SSH.start(host, user, :password => pass) do |ssh|
      ssh.exec! 'cd ~/path/to/second_app/; ~/.rvm/wrappers/ruby-2.1.2@second_app/bundle install'
      ssh.exec! 'cd ~/path/to/second_app/; ~/.rvm/wrappers/ruby-2.1.2@second_app/rake db:automigrate RAILS_ENV=production'
    end
    

    这是一个“有效”的解决方案,但我仍然想放弃使用 ssh。

    【讨论】:

      猜你喜欢
      • 2012-04-20
      • 2012-06-25
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多