Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用rvm在不同的rails应用程序中启动rake任务?_Ruby On Rails_Ruby_Rake_Rvm - Fatal编程技术网

Ruby on rails 如何使用rvm在不同的rails应用程序中启动rake任务?

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似乎都使用了第一个应用程序代码。 我甚至尝试

我有一个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似乎都使用了第一个应用程序代码。 我甚至尝试通过传递整个路径来启动特定的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的使用。

我已经在主要问题中添加了详细信息。