我在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的第一天。
答案 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/