【问题标题】:local rvm ruby installation and remote rbenv ruby installation - Can they coexist?本地 rvm ruby​​ 安装和远程 rbenv ruby​​ 安装 - 它们可以共存吗?
【发布时间】:2016-09-27 03:09:28
【问题描述】:

我在尝试将 ruby​​ 应用程序从存储库推送到远程服务器时遇到 SSHKit::Runner::ExecuteError。

开启

$: bundle exec cap production deploy

我明白了

DEBUG [506a96fd] Running [ -d ~/.rvm ] as deploy@168.257.12.345
DEBUG [506a96fd] Command: [ -d ~/.rvm ]
DEBUG [506a96fd] Finished in 1.496 seconds with exit status 1 (failed).
DEBUG [8e553e85] Running [ -d /usr/local/rvm ] as deploy@168.257.12.345
DEBUG [8e553e85] Command: [ -d /usr/local/rvm ]
DEBUG [8e553e85] Finished in 0.074 seconds with exit status 1 (failed).
DEBUG [d6f82812] Running ~/.rvm/bin/rvm version as deploy@168.257.12.345
DEBUG [d6f82812] Command: ~/.rvm/bin/rvm version
DEBUG [d6f82812]    bash: /home/deploy/.rvm/bin/rvm: No such file or directory
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@168.257.12.345: rvm exit status: 127
rvm stdout: Nothing written
rvm stderr: bash: /home/deploy/.rvm/bin/rvm: No such file or directory

SSHKit::Command::Failed: rvm exit status: 127
rvm stdout: Nothing written
rvm stderr: bash: /home/deploy/.rvm/bin/rvm: No such file or directory

经过数小时的故障排除和在互联网上搜索类似的错误消息后,我想到了以下问题:使用 rvm 在我的本地计算机上安装 ruby​​ 并将应用程序从 repo 推送到安装了 ruby​​ 的远程计算机是否是常见做法与 rbenv。我的想法是“没有这样的文件或目录”错误意味着我的本地安装,基于它在本地的安装方式,正在远程寻找一个 rvm 文件夹,当它没有找到它时它会抱怨。

我的下一步是在本地安装相同的 ruby​​ 版本,使用 rbenv,但其他研究支持 rvm 与 rbenv 不兼容,您应该在使用 rbenv 之前删除所有 rvm 痕迹。两者都安装在我的本地机器上。

是否有一种技巧可以使这项工作无需在本地全面卸载 rvm 以及与之关联的每个 gem,或者我是否按照this answer 中的说明在遥控器上手动创建文件夹?老实说,寻找最干净,最好的做法。非常感谢。

宝石文件

# Added per gorails.com tutuorial @ gorails.com/deploy/ubunt/14.04
gem 'capistrano', '~> 3.4.0'
gem 'capistrano-bundler', '~> 1.1.2'
gem 'capistrano-rails', '~> 1.1.1'

# Add this if you're using rbenv
# gem 'capistrano-rbenv', github: "capistrano/rbenv"

gem 'capistrano-rvm', github: "capistrano/rvm"

Capfile

require 'capistrano/setup'
require 'capistrano/deploy'

require 'capistrano/bundler'
require 'capistrano/rails'

require 'capistrano/rvm'

set :rvm_type, :user
set :rvm_ruby_version, '2.0.0-p451'

# Load custom tasks from `lib/capistrano/tasks` if you have any defined
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

config/deploy.rb

lock '3.4.1'
set :application, 'my_app'
set :repo_url, 'https://github.com/my_acct/my_app.git'
set :deploy_to, '/home/deploy/#{my_app}'

namespace :deploy do
  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
    end
  end
end

config/deploy/production.rb

set :stage, :production
server '168.257.12.345', user: 'deploy', roles: %w{web app}

版本

ruby 2.3.1 (local and remote)
rbenv version 2.1.5
rvm 1.27.0

【问题讨论】:

    标签: ruby-on-rails rvm web-deployment rbenv capistrano3


    【解决方案1】:

    我不知道您的设置是否常见,但应该可以。对于 Capistrano 而言,它并不真正关心您是在本地使用 rvm 还是 rbenv,只在服务器上使用。因此,如果服务器上有 rbenv,则需要 capistrano-rbenv gem 和 Capfile 配置,而不是 capistrano-rvm gem。

    您上面描述的错误是因为 Capistrano 正在尝试在远程服务器上查找 RVM。 capistrano-rvm|rbenv gem 存在的原因是,当 Capistrano 与服务器建立 SSH 连接以运行安装时,它不会自动访问为您提供本地自动配置的 bash 扩展。所以 Capistrano 必须手动设置。

    根据您的本地计算机,您认为 rvm 和 rbenv 不兼容是正确的,您应该在安装 rbenv 之前删除所有 rvm 痕迹,反之亦然。在继续找出 Capistrano 之前,我会确保您的本地安装已正确设置。

    我希望这会有所帮助!

    【讨论】:

    • 谢谢。做了一个“ls -a ~”来通过手术找到并删除每一个 rvm 痕迹。从自制软件重新加载 rbenv 并认为我已经解决了这个问题。突然,在 rake "db:migrate" 之后,一个 ruby​​ -v 告诉我我安装了 2.1.5p273。不知道为什么,这让我很生气。 rbenv install 2.3.1 安装成功。 rbenv global 2.3.1 将其设置为全局。从我的应用程序文件夹中, rbenv local 2.3.1 在本地设置它。不过,当我执行 ruby​​ -v 时,它会出现 ruby​​ 2.1.5p273。关于为什么会发生这种情况的任何想法? 2.1.5 版是否有任何可能隐藏的地方? Gemfile 现在使用 rbenv gem。已删除 rvm gem。
    • 如果你运行“type ruby​​”,结果是什么?
    • 我得到“ruby 已散列(/Users/me/.rbenv/shims/ruby)”不知道如何,重新启动并离开。回来,现在 ruby​​ -v 产生 ruby​​ 2.3.1p112 所以我会看看这个版本是否有效。但是,现在,使用 cap 生产部署获取“cap aborted!LoadError: cannot load such file -- capistrano/rbenv”。
    • 找到了一个提供此解决方案的 Q/A here:gem install capistrano-rbenv。 cap production deploy 取得了迄今为止最大的进展,但存在与 rbenv 无关的架构迁移问题(似乎)。感谢您确认我对 rbenv 的想法。非常感谢。
    • 我相信test实际上是在服务器上运行的,但我会检查一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2013-05-21
    • 2013-12-27
    • 2014-06-13
    相关资源
    最近更新 更多