如何使用Rake在gem中生成可执行文件?

时间:2009-09-24 04:56:26

标签: ruby netbeans rake

我最近一直在学习Ruby,但我还没有深入学习Rake。我一直在玩NetBeans,我用一个简单打印“Hello,World!”的文件制作了一个Ruby项目。我正在查看NetBeans生成的Rakefile,我注意到它已经注释掉了s.executables行,所以我取消注释,并尝试构建它。当然它失败了:

Don't know how to build task 'bin/your_executable_here'

我正在努力做的是弄清楚如何做到这一点。我已经google了,我找不到任何有关如何正确生成可执行文件的信息。这是NetBeans生成的Rakefile:

require 'rubygems'
require 'rake'
require 'rake/clean'
require 'rake/gempackagetask'
require 'rake/rdoctask'
require 'rake/testtask'

spec = Gem::Specification.new do |s|
  s.name = 'Learning'
  s.version = '0.0.1'
  s.has_rdoc = true
  s.extra_rdoc_files = ['README', 'LICENSE']
  s.summary = 'Your summary here'
  s.description = s.summary
  s.author = ''
  s.email = ''
  s.executables = ['your_executable_here']
  s.files = %w(LICENSE README Rakefile) + Dir.glob("{bin,lib,spec}/**/*")
  s.require_path = "lib"
  s.bindir = "bin"
end

Rake::GemPackageTask.new(spec) do |p|
  p.gem_spec = spec
  p.need_tar = true
  p.need_zip = true
end

Rake::RDocTask.new do |rdoc|
  files =['README', 'LICENSE', 'lib/**/*.rb']
  rdoc.rdoc_files.add(files)
  rdoc.main = "README" # page to start on
  rdoc.title = "Learning Docs"
  rdoc.rdoc_dir = 'doc/rdoc' # rdoc output folder
  rdoc.options 

如果这是一个愚蠢的问题,我很抱歉,老实说,我确实试着自己找到这些信息。

编辑:我不知道必须有一个可执行文件,其名称与您在项目中的./bin中指定的默认文件相同。我想通了。

2 个答案:

答案 0 :(得分:1)

此代码用于制作gem文件。 Gems是ruby的包管理设备。一些gem带有可执行脚本文件,可以从命令行运行。在构建gem时,它们被放置在./bin目录中,并且在部署它们时,它们将被复制到与ruby可执行文件相同的文件夹中。

要使文件可执行,您需要在第一行添加shabang(#!/ user / local / bin / ruby​​)并更改文件权限以允许执行。

答案 1 :(得分:1)

s.executables数组必须包含gem

的bin目录中的可执行文件的名称
 s.executables = %w( my_awesome_commandline_churner )