部署Ruby独立脚本和依赖项的最佳选择?

时间:2012-03-12 22:28:28

标签: ruby-on-rails ruby rubygems gem

对于Ruby独立脚本,Rails喜欢部署功能,例如Gemfile /“bundle install”等

假设您正在开发一个您想要测试然后部署的Ruby脚本,并且可能会发送给其他人,您会使用Rails之类的部署方法来说:

a)创业板 - 标记GEM要求&根据需要安装它们 - 例如Rails“Gemfile”,你标记你需要什么宝石,然后“捆绑安装”来安装它们

b)文件要求 - 如果它们在您的脚本目录中,则自动加载* .rb文件(我在Rails中考虑如果您将类文件放在apps / model目录中,Rails会自动加载/要求的文件为你)

2 个答案:

答案 0 :(得分:4)

取决于它是否是您希望人们在他们找到的每个主机上使用的工具。还取决于该工具是否可以与公共存储库共享。

如果它只是必须工作,而不用担心你是否已经通过捆绑器安装了宝石,你可以在独立脚本中使用类似下面的东西来安装宝石(如果还没有)(注意系统)与用户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'

...

答案 1 :(得分:2)

以我的拙见,宝石是要走的路。 Bundler让您轻松上手;当你运行命令时,它会为你启动一个骨架......

bundle gem <GEM_NAME>

Take a look。只要你在gem的.gemspec文件中指定你的依赖项,并且有人安装你的打包gem(它们不需要bundle,只需要RubyGems的gem命令),依赖项将作为gems安装。用它。