Я хочу скопировать все мои драгоценные камни с одной машины (foo) на другую (bar).обе машины идентичны, за исключением того, что в foo установлена куча драгоценных камней, а в bar нет (bar не может войти в интернет).
Я скопировал / usr / local / lib / ruby / gems из foo в bar, и теперь bar распознает, что гемы установлены.
root@bar # gem list
*** LOCAL GEMS ***
keybox (1.2.1)
rake (0.9.2.2)
... and so on
если я попытаюсь запустить их из их исходного местоположения, они будут работать как положено
root@bar # cd /usr/local/lib/ruby/gems/1.8/gems/keybox-1.2.1/bin
root@bar # ./keybox --version
keybox: version 1.2.1
я бы хотел, чтобы все драгоценные камни находились под общим каталогом bin, как будто они включеныfoo
root@bar # find /usr/local/lib/ruby/gems/1.8/gems/*/bin -type f | xargs -I baz ln -s baz /usr/local/bin/
, как и ожидалось, это создает символические ссылки из местоположения каждого драгоценного камня на / usr / local / bin /
для некоторых драгоценных камней (например, rake) все работает как положено, для другихкак keybox) не работает.для некоторых драгоценных камней существует разница между сценарием в каталоге gem и тем, который устанавливается в / usr / local / bin.
root@foo # diff /usr/local/lib/ruby/gems/1.8/gems/keybox-1.2.1/bin/keybox /usr/local/bin/keybox
1,4c1,7
< #!/usr/bin/env ruby
< ########################################################################
< #
< ########################################################################
---
> #!/usr/local/bin/ruby18
> #
> # This file was generated by RubyGems.
> #
> # The application 'keybox' is installed as part of a gem, and
> # this file is here to facilitate running it.
> #
6,17c9
< #----------------------------------------------------------------------
< # bootstrap
< #----------------------------------------------------------------------
< begin
< require 'keybox'
< require 'keybox/application/password_safe'
< rescue LoadError
< path = File.expand_path(File.join(File.dirname(__FILE__),"..","lib"))
< raise if $:.include? path
< $: << path
< retry
< end
---
> require 'rubygems'
19,21c11
< #----------------------------------------------------------------------
< # instantiate the program and pass it the commandline parameters
< #----------------------------------------------------------------------
---
> version = ">= 0"
23,24c13,16
< keybox = Keybox::Application::PasswordSafe.new(ARGV)
< keybox.run
---
> if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then
> version = $1
> ARGV.shift
> end
25a18,19
> gem 'keybox', version
> load Gem.bin_path('keybox', 'keybox', version)
, так как я уже копирую гемы с одного компьютера на другой, я мог бы так же легко копировать публичные скрипты, но есть ли более «гемиский» способ сделать это?есть ли команда gem, которая будет генерировать общедоступные скрипты, как это было сделано в случае с keybox?