将一个Ruby命令行应用程序添加到/ usr / bin?

时间:2013-12-13 16:04:16

标签: ruby shell

我在Ruby中编写了一个shell程序。现在我想将它添加到我的bin目录中,以便我可以通过运行$ my-rb-prog ...来调用该程序。

首先我尝试将我的文件符号链接到/ usr / bin,然后它说它无法加载我需要的模块。

在我的第二次尝试中,我尝试使用我的项目构建一个gem工作正常,但我仍然无法访问我的shell程序。之后我安装了宝石。这是我的gemspec的样子:

# -*- encoding: utf-8 -*-

$:.unshift(File.join(File.dirname(__FILE__), "/lib"))
require 'webcheck'

Gem::Specification.new do |s|
  s.name        = "webcheck"
  s.version     = WebCheck::VERSION
  s.platform    = Gem::Platform::RUBY
  s.authors     = ["Victor Jonsson"]
  s.email       = ["kontakt@victorjonsson.se"]
  s.homepage    = "http://victorjonsson.se"
  s.summary     = %q{Check your website man!}
  s.description = %q{Just check it!}

  s.required_ruby_version     = '>= 1.9.3'

  s.add_dependency "httparty", "~> 0.12.0"

  s.post_install_message = "Just check it!"

  s.files         = `git ls-files`.split("\n")
  s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
  s.require_paths = ["lib"]
end

我以为我可以访问我的shell程序,这是一个位于我项目内bin目录中的Ruby文件,之后我安装了gem但显然并不那么容易。

如果你不知道,这是我编写Ruby的第一天。

2 个答案:

答案 0 :(得分:1)

不要忘记将#!/usr/bin/env ruby添加到Ruby脚本的顶部。

Making a Ruby Script Executable”是一个非常好的教程,可以在不使用gem的情况下使您的可执行文件在系统范围内可用。

答案 1 :(得分:1)

首先,添加一个“she-bang”字符串作为文件的第一行。它将允许shell运行该文件。它应该是:

#!/usr/bin/env ruby

然后赋予文件执行权限:

$ chmod +x your_file_name.rb

现在您可以运行您的应用程序:

./your_file_name.rb

此外,您可以使用此脚本将目录路径添加到PATH变量,并从任何位置运行应用程序。

# You may do this in ~/.bashrc file
PATH=$PATH:path/to/dir/with/script/