Лучшие варианты для развертывания автономного скрипта Ruby и зависимостей? - PullRequest
3 голосов
/ 13 марта 2012

для автономного скрипта на Ruby, что Rails любит такие функции развертывания, как Gemfile / "комплектация установки" и т. Д.

при условии, что вы разрабатываете сценарий Ruby, который хотите протестировать, а затем развернуть и, возможно, передать другим, какой подход к развертыванию, например, в Rails, вы бы использовали:

a) GEM - маркировка требований GEM и установка их по мере необходимости - например, Rails "Gemfile", где вы отмечаете, какие гемы вам нужны, а затем "bundle install" устанавливаете их

b) File Require - автоматически загружать файлы * .rb, если они находятся в каталоге скриптов (я имею в виду Rails, где, если вы поместите файл класса в каталог apps / model, Rails автоматически загрузит / требует файл для вы)

Ответы [ 2 ]

4 голосов
/ 23 января 2016

зависит от того, ожидаете ли вы, что это инструмент, который люди будут использовать на каждом хосте, на котором они его найдут, или нет.также зависит от того, можно ли использовать инструмент совместно с общедоступными репозиториями.

, если он просто должен работать, не беспокоясь о том, установили ли вы гемы через упаковщик или нет, вы можете использовать что-то вроде следующего изв вашем автономном скрипте для установки гемов, если их еще нет (помните, что система и пользовательский ruby):

#!/usr/bin/env ruby

require 'rubygems'

def install_gem(name, version=Gem::Requirement.default)
  begin
    gem name, version
  rescue LoadError
    print "ruby gem '#{name}' not found, " <<
      "would you like to install it (y/N)? : "
    answer = gets
    if answer[0].downcase.include? "y"
      Gem.install name, version
    else
      exit(1)
    end
  end
end

# any of the following will work...
install_gem 'activesupport'
install_gem 'activesupport', '= 4.2.5'
install_gem 'activesupport', '~> 4.2.5'

require 'active_support/all'

...
2 голосов
/ 13 марта 2012

По моему скромному мнению, драгоценный камень - это путь.Bundler позволяет легко начать;он запускает скелет для вас, когда вы запускаете команду ...

bundle gem <GEM_NAME>

Посмотрите .Пока вы указываете свои зависимости в файле .gemspec вашего гема, и кто-то устанавливает ваш упакованный гем (им не понадобится упаковщик, просто команда gem RubyGems), зависимости будут устанавливаться вместе с ним как гемы.

...