2009-09-24 94 views
1

我最近一直在学习Ruby,而且还没有进入学习Rake的肮脏的空白。我一直在玩NetBeans,我用一个只打印“Hello,World!”的文件做了一个小小的Ruby项目。我正在查看NetBeans生成的Rakefile,并且我注意到它已将s.executables行注释掉了,因此我取消了注释,并尝试构建它。当然它失败了:如何使用Rake在gem中生成可执行文件?

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

我想要做的,是弄清楚如何使这项工作。我搜索了一下,并且找不到关于如何正确生成可执行文件的任何信息。这里产生由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。我全力以赴。

+0

你想NetBeans中运行该文件,或者你想生成一个可执行文件的Ruby rake任务(.bat或.sh)? – khelll 2009-09-24 05:28:02

回答

1

的s.executables数组必须包含在你的宝石的bin目录中的可执行文件的名字

s.executables = %w(my_awesome_commandline_churner) 
+0

正确,似乎没有人关心如何记录。 :p – Rayne 2009-09-29 20:52:36

+0

请参阅:http://docs.rubygems.org/read/chapter/20#executables 另外,如果有人怀疑,看看其他人如何做。 – 2009-10-14 05:43:48

1

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

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

+0

那么,我需要做些什么才能做到这一点?它只是给了我,“不知道如何建立任务”bin/testexe“”错误。我是否应该把文件放到相对于Rakefile的bin文件夹中?因为我尝试过,并且继续给我错误。我开始怀疑这可能不仅仅是一个NetBeans问题... – Rayne 2009-09-24 06:08:07

+0

没关系,我的笨蛋蠢蠢欲动了。 :\, 谢谢你的帮助。 – Rayne 2009-09-24 06:53:10

相关问题