从内部获取已执行gem的规范

时间:2014-01-10 10:56:19

标签: ruby gem bundler

我已经构建了一个gem并希望它能够打印它的版本。

我无法使用Gem::Specification.find_by_name('mygem').version 因为它安装了几个版本。

让我们说我的程序只有一个src文件/ bin / myruby包含这个:

#!/usr/bin/env ruby 
mygem_version = ???
puts "This is my gems version: #{mygem_version}"

3 个答案:

答案 0 :(得分:3)

一个常见的约定是创建一个定义lib/<your_gem_name>/version.rb常量的YourGemName::VERSION。然后,您可以在中引用 gemspec中的常量,这是在构建gem时得到的Ruby代码。

阅读http://timelessrepo.com/making-ruby-gems以获取使用此方法的指南。

答案 1 :(得分:0)

如果您正在使用Bundler(想想rails),请尝试

Bundler.definition.specs

否则,确保你的宝石有一个VERSION常数你可以问这些东西

答案 2 :(得分:0)

这对我有用,并且总是返回正确的版本。

#!/usr/bin/env ruby 
puts "This is my gems version: #{Gem.loaded_specs['mygem'].version}"