Ruby on rails 如何使用rvm在不同的rails应用程序中启动rake任务?
我有一个rails应用程序,将用于设置另一个rails应用程序。 我已经使用system()完成了git拉取和解压,但我在使用标准设置第二个应用程序时遇到了问题:Ruby on rails 如何使用rvm在不同的rails应用程序中启动rake任务?,ruby-on-rails,ruby,rake,rvm,Ruby On Rails,Ruby,Rake,Rvm,我有一个rails应用程序,将用于设置另一个rails应用程序。 我已经使用system()完成了git拉取和解压,但我在使用标准设置第二个应用程序时遇到了问题: system 'cd ~/path/to/second_app/; bundle install' system 'cd ~/path/to/second_app/; rake db:automigrate RAILS_ENV=production' bundle install和rake似乎都使用了第一个应用程序代码。 我甚至尝试
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
有什么方法可以做到这一点吗?整个路径肯定会起作用
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'
请描述一下这一行之后出现了什么问题?因为这是我们团队的一项优先任务,所以我使用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的使用。我已经在主要问题中添加了详细信息。