Sun*_*day 25 ruby gem ruby-on-rails
这是一个非常基本的红宝石宝石问题.我很熟悉编写这样的简单ruby脚本:
#!/usr/bin/ruby
require 'time'
t = Time.at(123)
puts t
Run Code Online (Sandbox Code Playgroud)
现在我想在我的脚本中使用我自己的ruby gem.在我的rails项目中我可以简单地说require 'my_gem'
.但是,这在独立脚本中不起作用.在独立的ruby脚本中使用我自己的gem的最佳/正确方法是什么?
Jer*_*man 26
您应该能够直接在最新版本的Ruby中直接使用它.
# optional, also allows you to specify version
gem 'chronic', '~>0.6'
# just require and use it
require 'chronic'
puts Chronic::VERSION # yields "0.6.7" for me
Run Code Online (Sandbox Code Playgroud)
如果您仍然使用Ruby 1.8(默认情况下不需要RubyGems),则必须明确将此行放在加载gem的尝试之上:
require 'rubygems'
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用-rubygems
具有相同效果的标志调用Ruby解释器.
也可以看看:
你可以使用这样的东西.如果它尚未安装,它将安装gem:
def load_gem(name, version=nil)
# needed if your ruby version is less than 1.9
require 'rubygems'
begin
gem name, version
rescue LoadError
version = "--version '#{version}'" unless version.nil?
system("gem install #{name} #{version}")
Gem.clear_paths
retry
end
require name
end
load_gem 'your_gem'
Run Code Online (Sandbox Code Playgroud)
值得注意的是,bundler
它本身可以处理这个问题。它特别有趣,因为bundler
从 2.6 版本开始默认随 Ruby 一起提供,并且您不再需要手动安装它。
这个想法是:
bundler/inline
在脚本的顶部要求,gemfile
方法,并在块内声明您需要的 gem,就像您在 a 中所做的那样Gemfile
,例如:
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'rainbow'
end
# From here on, rainbow is available so I can
# print colored text into my terminal
require 'rainbow'
puts Rainbow('This will be printed in red').red
Run Code Online (Sandbox Code Playgroud)
官方文档可以在bundler网站上找到:bundler in a single file ruby script
归档时间: |
|
查看次数: |
18373 次 |
最近记录: |