我最近一直在学习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中指定的默认文件相同。我想通了。
答案 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 )