如何在不指定路径的情况下运行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"