Meu servidor possui uma instalação de rvm em todo o sistema em / usr / local / rvm / scripts / rvm.
quando tento defini-lo no meu deploy.rb conforme abaixo
conjunto: rvm_path, "/ usr / local / rvm / scripts / rvm"
não está sendo configurado e quando tento implantar, ele falha com a mensagem de erro abaixo
! Ruby Version Manager não encontrado
! Se o RVM estiver instalado, verifique sua configuração: rvm_path.
Eu também tentei com set_default
set_default: rvm_path, "/ usr / local / rvm / scripts / rvm"
Mas o problema ainda está lá.
quando tentei codificar o caminho no arquivo abaixo da gema, funcionou sem problemas:
https://github.com/nadarei/mina/blob/master/lib/mina/rvm.rb
Abaixo está a modificação:
linha original:
set_default: rvm_path, "$ HOME / .rvm / scripts / rvm"
linha codificada por mim:
set_default: rvm_path, "/ usr / local / rvm / scripts / rvm"
Então, agora funciona, mas codificar o caminho não é uma solução para mim ou para qualquer outra pessoa.
você pode me orientar sobre o que há de errado aqui ....
Eu vi a documentação online de todas as configurações possíveis (http://nadarei.co/mina/settings/) e descobri que você não listou rvm_path lá.
a gema não suporta esta configuração atualmente .. ???
Recebo o mesmo erro e pude ver o rvm no caminho. Você conseguiu fazer isso funcionar?
wow umm então mesmo problema .... alguém com soluções?
Edit: umm então na verdade eu acabei de fazer funcionar ... Eu aparentemente escrevi algo errado -.-. Alarme falso!
Mesmo aqui :(
Aqueles que o fizeram funcionar, podem me dizer o que o fez funcionar.
Na verdade, devido ao problema de RVM acima, mudei para Capistrano para automatizar minha implantação.
Acabei tendo que usar o caminho fornecido quando você faz rvm info
. Isso parece funcionar.
Edit: Eu estava enganado. Não é which rvm
, você deve executar rvm info
e poderá obter o caminho do rvm. Você ainda precisa anexar /scripts/rvm
ao final do caminho obtido com rvm info
Eu tenho exatamente o mesmo problema. Alguém resolveu? Codifiquei set_default :rvm_path, "/usr/local/rvm/scripts/rvm"
mas não tive sorte :(
@zolzaya tenho certeza que o caminho codificado deve ser algo /usr/local/.rvm/scripts/rvm
. Verifique o. na frente do primeiro rvm, é sorrateiro.
Obrigado por responder. Mas não funciona para mim :(. Como encontrar esse caminho? Eu corro which rvm
. Ele me mostra /usr/local/rvm/bin/rvm
hmm desculpe, o comando é na verdade rvm info
e você terá que seguir /scripts/rvm
até o final do caminho que você obteve de rvm info
. Embora pareça que você está no caminho certo. que tipo de erro você está recebendo?
Aqui, a saída completa do comando rvm info
:
root<strong i="7">@user</strong>:~# rvm info
[email protected]:
system:
system: "ubuntu/13.10/x86_64"
bash: "/bin/bash => GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)"
zsh: " => not installed"
rvm:
version: "rvm 1.25.18 (stable) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]"
updated: "2 days 21 hours 49 minutes 14 seconds ago"
path: "/usr/local/rvm"
ruby:
interpreter: "ruby"
version: "2.0.0p353"
date: "2013-11-22"
platform: "x86_64-linux"
patchlevel: "2013-11-22 revision 43784"
full_version: "ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux]"
homes:
gem: "/usr/local/rvm/gems/[email protected]"
ruby: "/usr/local/rvm/rubies/ruby-2.0.0-p353"
binaries:
ruby: "/usr/local/rvm/rubies/ruby-2.0.0-p353/bin/ruby"
irb: "/usr/local/rvm/rubies/ruby-2.0.0-p353/bin/irb"
gem: "/usr/local/rvm/rubies/ruby-2.0.0-p353/bin/gem"
rake: "/usr/local/rvm/rubies/ruby-2.0.0-p353/bin/rake"
environment:
PATH: "/usr/local/rvm/gems/[email protected]/bin:/usr/local/rvm/gems/ruby-2.0.0-p353@global/bin:/usr/local/rvm/rubies/ruby-2.0.0-p353/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
GEM_HOME: "/usr/local/rvm/gems/[email protected]"
GEM_PATH: "/usr/local/rvm/gems/[email protected]:/usr/local/rvm/gems/ruby-2.0.0-p353@global"
MY_RUBY_HOME: "/usr/local/rvm/rubies/ruby-2.0.0-p353"
IRBRC: "/usr/local/rvm/rubies/ruby-2.0.0-p353/.irbrc"
RUBYOPT: ""
gemset: "rails-4.1"
Não consigo encontrar /scripts/rvm
nesse resultado. BTW, estou recebendo os erros abaixo:
! Ruby Version Manager not found
! If RVM is installed, check your :rvm_path setting.
! Command failed.
Failed with status 1
ele mostra que o caminho do seu rvm é /usr/local/rvm
, você apenas tem que adicionar /scripts/rvm
ao final disso. Só sei que funciona no meu caso, mas não tenho um bom entendimento. Parece que você escolheu o caminho certo inicialmente. Qual é o erro que você está obtendo para que não funcione?
Não funciona :( O erro é exatamente o mesmo Ruby Version Manager not found
. A propósito, obrigado pelo conselho :)
Não tenho certeza do que mais olhar. Se você quiser, pode colocar seu arquivo deploy.rb no pastebin e vinculá-lo aqui. A única coisa em que consigo pensar é ter certeza de que require 'mina/rvm'
comentou. Também na máquina de destino, só quero confirmar se você tem o rvm e o ruby instalados para acesso multiusuário, certo?
Obrigado por tentar me ajudar :). Estou multiusuário instalado. Aqui está o deploy.rb. Por motivos de segurança, removi as configurações de domínio, deploy_to e repositório.
require 'mina/bundler'
require 'mina/rails'
require 'mina/git'
# require 'mina/rbenv' # for rbenv support. (http://rbenv.org)
require 'mina/rvm' # for rvm support. (http://rvm.io)
# Basic settings:
# domain - The hostname to SSH to.
# deploy_to - Path to deploy into.
# repository - Git repo to clone from. (needed by mina/git)
# branch - Branch name to deploy. (needed by mina/git)
set :branch, 'master'
# Manually create these paths in shared/ (eg: shared/config/database.yml) in your server.
# They will be linked in the 'deploy:link_shared_paths' step.
set :shared_paths, ['config/database.yml', 'log']
# Optional settings:
set :user, 'root' # Username in the server to SSH to.
# set :port, '30000' # SSH port number.
# ISSUE: https://github.com/nadarei/mina/issues/124
# set_default :rvm_path, '/usr/local/rvm/scripts/rvm'
# set_default :rvm_path, '/usr/local/rvm/bin/rvm'
set_default :rvm_path, '/usr/local/rvm/scripts/rvm'
# This task is the environment that is loaded for most commands, such as
# `mina deploy` or `mina rake`.
task :environment do
# If you're using rbenv, use this to load the rbenv environment.
# Be sure to commit your .rbenv-version to your repository.
# invoke :'rbenv:load'
# For those using RVM, use this to load an RVM version@gemset.
invoke :'rvm:use[ruby-2.0.0-p353@rails-4-1]'
end
# Put any custom mkdir's in here for when `mina setup` is ran.
# For Rails apps, we'll make some of the shared paths that are shared between
# all releases.
task :setup => :environment do
queue! %[mkdir -p "#{deploy_to}/shared/log"]
queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/log"]
queue! %[mkdir -p "#{deploy_to}/shared/config"]
queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/config"]
queue! %[touch "#{deploy_to}/shared/config/database.yml"]
queue %[echo "-----> Be sure to edit 'shared/config/database.yml'."]
end
desc "Deploys the current version to the server."
task :deploy => :environment do
deploy do
# Put things that will set up an empty directory into a fully set-up
# instance of your project.
invoke :'git:clone'
invoke :'deploy:link_shared_paths'
invoke :'bundle:install'
invoke :'rails:db_migrate'
invoke :'rails:assets_precompile'
# to :launch do
# queue "touch #{deploy_to}/tmp/restart.txt"
# end
end
end
# For help in making your deploy script, see the Mina documentation:
#
# - http://nadarei.co/mina
# - http://nadarei.co/mina/tasks
# - http://nadarei.co/mina/settings
# - http://nadarei.co/mina/helpers
Adicionei meus conjuntos de joias:
root<strong i="9">@user</strong>:~# rvm gemset list
gemsets for ruby-2.0.0-p353 (found in /usr/local/rvm/gems/ruby-2.0.0-p353)
(default)
global
=> rails-4-1
Hmm, a única coisa que posso pensar que pode afetar você é que é invoke :'rvm:use[2.1.0]'
. Estou usando Ruby v2.1.0, então acho que o seu deveria ser algo como invoke :'rvm:use[2.0.0]'
. Espero que funcione. O resto parece igual ao meu.
Não funciona. Estou apenas desistindo :(
@zolzaya Desculpe. Eu gostaria de poder ajudar mais, mas estou muito limitado em minha compreensão de como usar o mina. Eu meio que hackeei o padrão para trabalhar com meu projeto. Sempre pretendo ler a documentação quando tenho uma chance, mas infelizmente essa chance ainda não apareceu. Espero que alguém com uma resposta à sua pergunta possa ajudá-lo. Eu diria que tente stackoverflow e veja se você consegue encontrar alguém aí para ajudar.
Boa sorte!
J
rvm_path
já é usado por scripts rvm:
~$ echo $rvm_path
/usr/local/rvm
Eu só mudei rvm_path
para outro nome de variável a fim de corrigir esse problema.
Tenho o mesmo problema:
! Ruby Version Manager não encontrado
! Se o RVM estiver instalado, verifique sua configuração: rvm_path.
! O comando falhou.
Falha com status 1
Eu verifiquei várias vezes. O rvm está instalado no local que especifiquei usando rvm_path.
EDIT: Vou confessar e dizer que descobri que estava sendo estúpido e usando o caminho do rvm na minha máquina local. Esperançosamente, isso pode ajudar alguém - você deseja usar o caminho rvm no servidor, não em sua máquina local.
no meu caso funcionou ("set" em vez de "set_default"):
conjunto: rvm_path, '/ usr / local / rvm / scripts / rvm'
Esse comando set consertou para mim! Obrigado @NazarK
obrigado, use "set: rvm_path"
funciona ~
Ainda tenho problemas. A mensagem de erro exata:
mina setup ⏎ master ✭ - sh: 2: [[: not found
- sh: 8: source: not found
- sh: 9: rvm: not found
-----> Using RVM environment 'ruby-2.2.2-p95<strong i="6">@default</strong>'
! Command failed.
Failed with status 1 (1)
Meu deploy.rb:
require 'mina/bundler'
require 'mina/rails'
require 'mina/git'
# require 'mina/rbenv' # for rbenv support. (http://rbenv.org)
require 'mina/rvm' # for rvm support. (http://rvm.io)
# Basic settings:
# domain - The hostname to SSH to.
# deploy_to - Path to deploy into.
# repository - Git repo to clone from. (needed by mina/git)
# branch - Branch name to deploy. (needed by mina/git)
----- private info -----
# For system-wide RVM install.
set :rvm_path, '/usr/local/rvm/bin/rvm'
# Manually create these paths in shared/ (eg: shared/config/database.yml) in your server.
# They will be linked in the 'deploy:link_shared_paths' step.
set :shared_paths, ['config/database.yml', 'config/secrets.yml', 'log']
# Optional settings:
set :user, 'deployer' # Username in the server to SSH to.
# set :port, '30000' # SSH port number.
# set :forward_agent, true # SSH forward_agent.
# This task is the environment that is loaded for most commands, such as
# `mina deploy` or `mina rake`.
task :environment do
# If you're using rbenv, use this to load the rbenv environment.
# Be sure to commit your .ruby-version or .rbenv-version to your repository.
# invoke :'rbenv:load'
# For those using RVM, use this to load an RVM version@gemset.
invoke :'rvm:use[ruby-2.2.2-p95@default]'
end
# Put any custom mkdir's in here for when `mina setup` is ran.
# For Rails apps, we'll make some of the shared paths that are shared between
# all releases.
task :setup => :environment do
queue! %[mkdir -p "#{deploy_to}/#{shared_path}/log"]
queue! %[chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/log"]
queue! %[mkdir -p "#{deploy_to}/#{shared_path}/config"]
queue! %[chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/config"]
queue! %[touch "#{deploy_to}/#{shared_path}/config/database.yml"]
queue! %[touch "#{deploy_to}/#{shared_path}/config/secrets.yml"]
queue %[echo "-----> Be sure to edit '#{deploy_to}/#{shared_path}/config/database.yml' and 'secrets.yml'."]
if repository
repo_host = repository.split(%r{@|://}).last.split(%r{:|\/}).first
repo_port = /:([0-9]+)/.match(repository) && /:([0-9]+)/.match(repository)[1] || '22'
queue %[
if ! ssh-keygen -H -F #{repo_host} &>/dev/null; then
ssh-keyscan -t rsa -p #{repo_port} -H #{repo_host} >> ~/.ssh/known_hosts
fi
]
end
end
desc "Deploys the current version to the server."
task :deploy => :environment do
to :before_hook do
# Put things to run locally before ssh
end
deploy do
# Put things that will set up an empty directory into a fully set-up
# instance of your project.
invoke :'git:clone'
invoke :'deploy:link_shared_paths'
invoke :'bundle:install'
invoke :'rails:db_migrate'
invoke :'rails:assets_precompile'
invoke :'deploy:cleanup'
to :launch do
queue "mkdir -p #{deploy_to}/#{current_path}/tmp/"
queue "touch #{deploy_to}/#{current_path}/tmp/restart.txt"
end
end
end
# For help in making your deploy script, see the Mina documentation:
#
# - http://nadarei.co/mina
# - http://nadarei.co/mina/tasks
# - http://nadarei.co/mina/settings
# - http://nadarei.co/mina/helpers
O que eu fiz foi mudar o usuário para 'implantador' e mudar o rvm_path
set :rvm_path, '/usr/local/rvm/bin/rvm'
Se eu apenas conectar através do terminal ao ssh como implantador, o rvm funciona bem.
PS Estou usando o rbenv na máquina local, espero não precisar ter o rvm no local para a operação correta do mina.
Não vejo seu repositório var:
set: repository, ' git @ ...
Eu cortei isso em '----- informações privadas -----'.
Na verdade, encontrei a origem de metade dos meus problemas. Era o shell de sistema padrão do Ubuntu, que utilizo como sistema operacional de servidor. Tem dash
, não bash
. O ponto é dash
mesmo não ter o comando 'source', que é muito usado em mina. Dash tem '.' comando no lugar de 'fonte'.
Então eu mudei dash para bash como shell padrão e todos os erros estranhos sumiram ... Mas apareceram novos erros mais comuns com RVM. mina deploy
simplesmente não consigo ver. mina ssh
também.
Por enquanto, resolvi temporariamente o problema, procurando manualmente todos os env vars e caminhos necessários para o meu Ruby. O pacote rvm de Mina não poderia me ajudar neste caso. Espero que este seja o problema com o Ubuntu, não com o Mina.
use o caminho rvm_use_path
set :rvm_use_path, '/usr/local/rvm/scripts/rvm'
Comentários muito úteis
use o caminho rvm_use_path
set :rvm_use_path, '/usr/local/rvm/scripts/rvm'