Use o arquivo rvmrc ou versão ruby ​​para definir um gemset do projeto com o RVM?

230

Eu uso o RVM, o Ruby Version Manager para especificar uma versão do Ruby e um conjunto de gemas para cada um dos meus projetos do Rails.

Eu tenho um .rvmrcarquivo para selecionar automaticamente uma versão Ruby e gemset sempre que cdentrar em um diretório de projeto.

Depois de instalar o RVM 1.19.0, recebo uma mensagem

Você está usando .rvmrc, requer confiança, é mais lento e não é compatível com outros gerenciadores de ruby, você pode mudar para .ruby-versionusar rvm rvmrc to [.]ruby-versionou ignorar esses avisos com rvm rvmrc warning ignore /Users/userName/code/railsapps/rails-prelaunch-signup/.rvmrc, .rvmrccontinuará sendo o arquivo de projeto padrão no RVM 1 e RVM 2, para ignorar o aviso para todos os arquivos executados rvm rvmrc warning ignore all.rvmrcs.

Devo continuar usando meu .rvmrcarquivo ou devo mudar para um .ruby-versionarquivo? Qual é o ideal? Quais são as ramificações?

Daniel Kehoe
fonte

Respostas:

372

Se o seu .rvmrcarquivo contiver código shell personalizado, continue usando .rvmrc, pois permite incluir qualquer código shell.

Se seu único objetivo é alternar versões do Ruby, use o .ruby-versionque é suportado por outros alternadores de versão do Ruby, como rbenv ou chruby . Este arquivo também não requer confiança, pois é apenas o nome de uma versão do Ruby e não será executado de forma alguma.

Se você usar, .ruby-versionpoderá incluir @gemsetno arquivo, mas isso não será compatível com outros comutadores. Para manter a compatibilidade, use o nome do gemset em um arquivo separado .ruby-gemsetque é ignorado por outras ferramentas (ele funciona apenas em conjunto com .ruby-version) .

Por exemplo, se você tiver um simples .rvmrc:

rvm use 1.9.3@my-app

Pode ser transformado em .ruby-version:

1.9.3

E .ruby-gemset:

my-app

Certifique-se de remover o .rvmrcarquivo, pois ele tem precedência sobre qualquer outro arquivo de configuração do projeto:

rm .rvmrc
mpapis
fonte
9
Observe que nem todos os aplicativos ainda oferecem suporte aos arquivos .ruby-version e .ruby-gemset mais recentes, mas apenas a .rvmrc. (RubyMine em particular). Obviamente, isso afetaria sua escolha de mudar para o novo sistema. Eu já havia apontado isso em uma resposta, pois levei muito tempo para localizar isso. No entanto a minha resposta foi removido por algum motivo ..
Giorgio
2
Existe um link para alguma documentação "oficial" sobre isso? Comecei a analisar como isso funciona no site RVM, mas apenas encontrei uma vaga menção a ele como o novo arquivo rvmrc, mas nada sobre como isso deve funcionar.
Eirc
2
Não está totalmente documentado, mas aqui é o que temos já rvm.io/workflow/projects/#ruby-versions
mpapis
4
Simplesmente coloque 1.9.3-p194 na versão .ruby para não funcionar para mim. Consulte o documento acima, rvm --create --ruby-version use 1.9.3-p194faça o trabalho e o conteúdo interno é realmenteruby-1.9.3-p194
Jinzhao Huo
2
As versões atuais do RubyMine suportam o estilo da versão .ruby. Pode confirmar com 6.3.2
BeepDog 15/05
76

Maneira rápida e fácil de mudar de .rvmrc para .ruby-version + .ruby-gemset

rvm rvmrc to .ruby-version
Sam Backus
fonte
1
É verdade, mas coloca [] em torno do. por alguma razão que eu ainda não descobri. (Talvez essa seja uma convenção com a qual eu não esteja familiarizado.) Na verdade, pesquisei a mensagem no Google e encontrei essa resposta porque as frases estranhas e o [] me deixaram sem saber o que realmente executar.
Zem
2
@zem O [] in [.]ruby-versionindica que o ponto é opcional ; os colchetes são uma convenção comum para indicar opcionalidade (em geral, não em ruby.) Portanto, você pode usar um arquivo chamado "ruby-version", sem o ponto, e que também seria usado. Isso pode ser útil se você desejar obter mais visibilidade do arquivo em sistemas que ocultam "arquivos de ponto" por padrão. Eu concordo que não é tão claro, no entanto.
Matt Gibson
Ele diz:Could not load .rvmrc
Abdullah
4

Se você deseja criar o arquivo .ruby-versione de .ruby-gemsetuma maneira curta, pode usar os comandos como este:

rvm use 2.1.1@nancy --create

rvm --create --ruby-version 2.1.1@nancy
user2627938
fonte
2

Você pode tentar os dois. Vá para a raiz do seu projeto, crie um arquivo .rvmrc ( touch .rvmrc) e edite rvm use 2.0.0-p451@your_gemset(sua versão ruby ​​e nome do gemset). Depois de salvar este arquivo, você pode digitar este comando:

cd ../your_project(você está no diretório your_project ), e o script em .rvmrc será executado.

O RVM recomenda usar a versão ruby. Você pode executar este comando para alternar de .rvmrc para .ruby-version

rvm rvmrc to .ruby-version

O que ele faz é criar 2 arquivos com o nome .ruby-version e .ruby-gemset e adicionar esta linha

ruby-2.0.0-p451 na versão .ruby

your_gemset em .ruby-gemset

Você pode tentar fazê-lo manualmente, se quiser :)

duykhoa
fonte
0

Instale o rvm usando:

\curl -sSL https://get.rvm.io | bash -s stable --rails

Instale diferentes versões do ruby:

rvm install 1.8.7
rvm install 1.9.2

Alterne para uma versão ruby ​​específica. Por exemplo, 1.8.7:

rvm use 1.8.7

Para criar um gemse:

rvm gemset create project_gemset

E para usar um gemset:

rvm gemset use project_gemset
Narasu Londave
fonte