如何在capistrano 3 + rvm中使用rake任务

时间:2015-03-05 23:44:39

标签: ruby-on-rails rake rvm capistrano

我在这里看到了以下问题:

question 1

question 2

question 3

然而,这些都没有帮助我。

如何在使用rvm时定义在capistrano上的任务中使用的正确rake?代码很简单:

task :precompile_production_assets do
  on roles(:all) do |host|    
   execute("cd #{fetch(:deploy_to)}/current && rake -T")
  end
end

此命令返回:

DEBUG [bae8f8f7] Command: cd /home/rails/current && rake -T
DEBUG [bae8f8f7] bash: /usr/local/bin/rake: /usr/bin/ruby1.8: bad interpreter: No such file or directory

我的设置和一些宝石是:

  • rvm current:ruby-2.2.0@project
  • rails 4.2.0
  • gem capistrano 3.3.5
  • gem capistrano-rvm 0.1.2
  • gem capistrano-bundler 1.1.3
  • gem capistrano-rails 1.1.2

看起来rake是从不同的地方打来的,但我不知道如何解决它。

在deploy.rb上我按照https://github.com/capistrano/rvm/中的说明设置了set :rvm_ruby_version, '2.2.0project',并在我的Capfile上注释了

require 'capistrano/rvm'
require 'capistrano/bundler'

尝试:

1 - 以下命令:

execute("cd #{fetch(:deploy_to)}/current && rake -T")
execute("cd #{fetch(:deploy_to)}/current && bundle exec rake -T")

给我回复:

DEBUG [bae8f8f7] bash: /usr/local/bin/rake: /usr/bin/ruby1.8: bad interpreter: No such file or directory

2 - 以下命令

execute(:rake, 'assets:precompile', 'RAILS_ENV=production')

给我回复:

DEBUG [b4457b08] Command: /usr/local/rvm/bin/rvm 2.2.0@project do bundle exec rake assets:precompile RAILS_ENV=production
DEBUG [b4457b08] Could not locate Gemfile or .bundle/ directory

在这种模式下,rake没问题,但正在另一个地方执行,我希望它在/ home / rails / current上。使用这种不同的语法,我不知道如何cd location && rake sometask

1 个答案:

答案 0 :(得分:1)

我想将此作为评论发布,但由于声誉不佳,我只能发帖回答。此外,由于某种原因,我的格式未被应用。

在deploy.rb中

你真的有:

set :rvm_ruby_version, '2.2.0project'

或者你在这里输入错误并在deploy.rb中将其更正为:

set :rvm_ruby_version, '2.2.0@project'

如果没有看到deploy.rb文件的内容或了解您的系统配置,我只能提供以下可能的修复:

  1. 你不应该评论" capistrano / rvm"。您链接到的文档说明包含在deploy.rb中。
  2. 您的系统ruby设置为1.8,您可以从&#34的输出中看到;尝试1"。您可以使用首选gemset将系统ruby(如果这是您在此计算机上运行的唯一应用程序)更改为2.2.0。
  3. 如果所有其他方法都失败了,您可以随时尝试:

    set :rvm_custom_path '~/your/ruby/path'