Escondendo rvm, bundler de seus usuários

Se você conhece essa maneira de executar scripts Ruby, continue lendo:

cd project-dir # with Gemfile
rvm ree

bundle
exec bin/some-ruby-script

Seria bom colocar esse project-dir / bin em $ PATH e apenas executar algum-ruby-script sem encontrar um Gemfile, trocando rubis com rvm e digitando bundle exec:

some-ruby-script

Para se livrar do rvm, crie um invólucro de ruby ​​que termine no shebang do script:

rvm wrapper ree destructuring ruby gem irb bundle

Isso cria destructuring_ruby em rvm / bin, mas pode ser movido, renomeado para qualquer coisa. Shebangs agora se parece com:

#!/usr/local/rvm/bin/destructuring_ruby

Para se livrar do bundle exec, basta usar rubygems e bundler em seu script:

require 'rubygems'
require 'bundler/setup'

Para se livrar da localização do Gemfile, defina BUNDLE_GEMFILE. Encontrar o Gemfile de um projeto deve funcionar em implementações de produção, áreas de trabalho de desenvolvimento e até mesmo quando o bin / dir está conectado simbolicamente.

Isso é desagradável, mas funciona. Sempre procurando uma maneira de melhorá-lo:

ENV['BUNDLE_GEMFILE'] = File.join(File.expand_path('../..', File.realpath(__FILE__)), 'Gemfile')

Portanto, o esqueleto do script é semelhante a:

#!/usr/local/rvm/bin/destructuring_ruby

require 'rubygems'

ENV
['BUNDLE_GEMFILE'] = File.join(File.expand_path('../..', File.realpath(__FILE__)), 'Gemfile')
require 'bundler/setup'