如何在不指定路径的情况下运行ruby程序
我已经建立了我的程序,并使用如何在不指定路径的情况下运行ruby程序,ruby,ubuntu,Ruby,Ubuntu,我已经建立了我的程序,并使用 $sudo gem install ./helloworld-0.0.1.gem 现在我需要一个名为helloworld的命令,这样我就可以从文件系统中的任何位置运行该程序。我需要能产生以下输出的东西 $helloworld hello world gempec文件如下所示 Gem::Specification.new do |s| s.name = "helloworld" s.version =
$sudo gem install ./helloworld-0.0.1.gem
现在我需要一个名为helloworld
的命令,这样我就可以从文件系统中的任何位置运行该程序。我需要能产生以下输出的东西
$helloworld
hello world
gempec文件如下所示
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
如何执行此操作?假设使用默认设置 使用rvm 首先,我建议您安装
rvm
()。这样,您就不需要sudo权限,可以在sane(测试、开发)环境中安装gems
使用工具来准备你的宝石作品
其次,如果您计划实现一个gem,我建议您使用bundler
(可能有许多极好的替代方案)来提供一个基本结构。如果像这样称呼
bundle gem --bin helloworld
它将为您创建helloworld gem的草图,并在目录exe
中创建一个文件,该文件将在安装时放置在$PATH
上,以便您可以调用它
(有关更多选项,请参见捆绑帮助gem
)。我不喜欢新的目录名(exe/
以前是bin/
),但我发现bundler提供的仍然是一个非常好和精简的大纲
在开发过程中,您会发现自己像这样玩弄它(这样它就不会使用任何“已安装”版本的gem)
快乐编码 和并不指定可执行文件。您需要改为使用:
s.executables您是否在gempec中指定了bin文件?显示您的gemspec
文件,帮助我们更好地回答您的问题。请看一下我的gemspec文件
bundle exec exec/helloworld
s.executables << "helloworld"