我已经构建了我的程序并使用
安装了gem$sudo gem install ./helloworld-0.0.1.gem
现在我需要一个名为helloworld
的命令,这样我就可以从文件系统的任何地方运行该程序。我需要能够产生以下输出的东西。
$helloworld
hello world
gemspec文件如下。
Gem::Specification.new do |s|
s.name = "helloworld"
s.version = "0.0.1"
s.default_executable = "helloworld"
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Suranga"]
s.date = %q{2015-08-06}
s.description = %q{Hello World}
s.files = ["Rakefile", "lib/helloworld.rb"]
s.test_files = ["test/test_helloworld.rb"]
s.require_paths = ["lib"]
s.rubygems_version = %q{1.6.2}
s.summary = %q{Hello World!}
if s.respond_to? :specification_version then
s.specification_version = 3
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
else
end
else
end
end
我该怎么做?
答案 0 :(得分:2)
default_executable
setting is deprecated并且无论如何都没有指定可执行文件。您需要使用executables
代替:
s.executables << "helloworld"
另请参阅Rubygems指南的adding an executable部分。
答案 1 :(得分:0)
假设默认设置。
首先,我建议您安装rvm
(http://rvm.io)。然后你就不需要sudo权限,可以在理智(测试,开发)环境中安装宝石。
其次,如果你计划实现一个gem,我建议你使用bundler
(并且有许多可能很棒的替代方案)来为你提供一个基本的结构。如果被称为
bundle gem --bin helloworld
它将为您创建helloworld gem的草图,目录exe
中的文件将在安装时放置在$PATH
上,以便您可以调用它
(有关更多选项,请参阅bundle help gem
)。我不喜欢新的目录名称(exe/
曾经是bin/
),但我发现,捆绑商生成的内容仍然是一个非常好的精简大纲。
在开发过程中,您会发现自己正在玩这样的游戏(然后它不会使用任何&#34;安装的&#34;版本的宝石)
bundle exec exec/helloworld
快乐的编码!