【问题标题】:Rake tasks cannot find rvm?Rake 任务找不到 rvm?
【发布时间】:2015-09-24 04:13:20
【问题描述】:

我有一个 ubuntu 服务器设置来运行带有 RVM 的 Rails 4 应用程序。当我 ssh 进入服务器并运行 ruby​​ -v 它显示 ruby 2.2.0p0(2014-12-25 修订版 49005)[x86_64-linux]

这是我通过 rvm 设置的正确 ruby​​ 版本。但是,当我尝试使用 net/ssh 运行 rake 任务时,它看不到 rvm 而是输出 红宝石 1.9.3 这是默认的系统红宝石。两次尝试我都使用同一个 ssh 用户。

如何获得识别 rvm 的 rake 任务?我的脚本如下

require 'net/ssh'

desc "Deploy site to production"

task :deploy => :environment do

  commands = [
    "ruby -v"
  ]

  Net::SSH.start('mysite.com', 'deployuser') do |ssh|
    commands.each { |c| puts ssh.exec!(c) }
    ssh.loop
  end

end

【问题讨论】:

    标签: ruby-on-rails linux ssh rake


    【解决方案1】:

    这很可能是因为使用 Net::SSH 时未加载您的 bash 配置文件。用户配置文件设置 RVM 版本。

    我在尝试运行 cron 作业时看到了它。根据https://rvm.io/deployment/cron,您可以创建一个包装脚本来设置您需要的 ruby​​ 版本/gems 环境。比如:

    # find the ruby environment (one time only)
    rvm env --path -- ruby-version[@gemset-name]
    
    # set the source returned, e.g.
    source /usr/local/rvm/environments/ruby-2.1.1@projectX
    ruby -v
    

    您可能需要根据您的环境进行适当调整

    【讨论】:

      猜你喜欢
      • 2011-10-06
      • 2015-08-19
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2012-04-20
      • 1970-01-01
      相关资源
      最近更新 更多