【问题标题】:capistrano-rbenv: Why is it ignoring rbenv_ruby?capistrano-rbenv:为什么忽略 rbenv_ruby?
【发布时间】:2017-05-02 16:58:23
【问题描述】:

好的。所以我正在尝试使用 capistrano 部署新版本的应用程序。我正在使用 rbenv,并安装了 1.8.7(用于旧应用程序)和 2.4.1(用于新应用程序)。我的 Capfile 包括:

require "capistrano/rbenv"

还有我的 deploy.rb:

set :rbenv_type, :user
set :rbenv_ruby, "2.4.1"

namespace :deploy do
  desc "Show ruby version"
  task :ruby_version do
    on roles(:all) do |h|
      execute "ruby --version"
      execute "rbenv versions"
    end
  end
end

运行cap production deploy:ruby_version 产生:

00:00 deploy:ruby_version
      01 ruby --version
      01 ruby 1.8.7 (2012-06-29 patchlevel 370) [x86_64-linux]
    ✔ 01 deploy@example.com 0.390s
      02 rbenv versions
      02   system
      02 * 1.8.7-p370 (set by /home/deploy/.rbenv/version)
      02   2.4.1
    ✔ 02 deploy@example.com 0.371s

我尝试了很多方法——set :default_env, {"RBENV_VERSION => "2.4.1"},删除了/home/deploy/.rbenv/version(这让我使用了system ruby​​)——但似乎没有什么可以让 rbenv_ruby 覆盖其他设置。

rbenv_ruby 设置为不存在的版本会引发错误,因此它似乎在做某事。

我要疯了。我做错了什么?

【问题讨论】:

  • 您是否尝试过将~/.ruby-version 文件与2.4.1 一起使用?
  • 是的,这给了我 2.4.1。不过,我仍然希望能够在 deploy.rb 文件中设置版本。

标签: ruby-on-rails ruby capistrano rbenv


【解决方案1】:

好的。而不是

execute "rbenv versions"

我想要:

execute :rbenv, "versions"

两者看起来非常相似,但根本不一样:

http://capistranorb.com/documentation/getting-started/tasks/

tl;dr:execute(:bundle, :install) 和 execute('bundle install') 的行为不同!

siiiiiiiiiiiiiiiigh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2019-03-22
    • 2017-07-07
    • 2012-01-30
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多