【问题标题】:How can I execute a Ruby script as executable file?如何将 Ruby 脚本作为可执行文件执行?
【发布时间】:2013-02-06 08:06:37
【问题描述】:

我想将我的 ruby​​ 脚本作为可执行文件执行,并且我应该在 /usr/bin/ 目录中执行。我知道这是可能的。

#!/usr/bin/ruby
puts "hello"

还有

chmod +x hello

但我还需要一些 ruby​​ 文件。

例如,如果我添加

require './other_ruby_script' 

到我的代码中,我将 Ruby 可执行文件移动到 /usr/bin/,它给了我错误:

无法加载此类文件“other_ruby_script”

我想执行 /usr/bin 目录下的 Ruby 文件。

所以也许我应该编译它?但我无法编译,因为当谷歌搜索“如何编译?”时我不明白。

如何创建适合我的代码格式的可执行 ruby​​ 代码。 (需要'./other_file')。而且我不必像这样执行 ./hello 我的可执行文件。只是我应该以你好的方式执行

【问题讨论】:

  • other_file 应该在库路径中。一种选择是将其打包为 gem。

标签: ruby compilation executable


【解决方案1】:
#!/usr/bin/env ruby
require_relative 'other_ruby_script'
puts "hello"

【讨论】:

    【解决方案2】:

    我想你问如何configure the right loadpath。首先,在你的脚本中我会做一个:

    puts $:
    

    这应该打印您是否正在加载正确的 Ruby 环境(如果您使用的是 rbenv 或 rvm,可能会出现问题)。例如我得到:

    /Users/pmu/.rbenv/versions/1.9.3-p194/lib/ruby/site_ruby/1.9.1
    /Users/pmu/.rbenv/versions/1.9.3-p194/lib/ruby/site_ruby/1.9.1/x86_64-darwin11.3.0
    /Users/pmu/.rbenv/versions/1.9.3-p194/lib/ruby/site_ruby
    

    只要您的加载路径不包含带有脚本“other_ruby_script”的目录,您就会收到此错误:

    LoadError: cannot load such file -- other_ruby_script
    

    所以,你应该尝试添加加载路径:

    $:.unshift "#{File.dirname(__FILE__)}/../some_path"
    

    如果你一开始没有加载 Ruby 环境,你的行:

    #!/usr/bin/ruby 
    

    需要设置从 Rbenv 或 Rvm 加载环境

    【讨论】:

    • 可能如果我编译我的 ruby​​ 脚本,会更容易吗?因为我在一个红宝石项目上工作。它还有许多其他的 ruby​​ 文件。
    • Google 没有给出关于该主题的结果,因为 Ruby 使用动态编译代码的虚拟机,如 Java、Python 或 Perl。据我所知,没有编译器。您需要学习如何在使用 Ruby 时动态加载依赖项。
    【解决方案3】:

    您可以在执行 ruby​​ 文件的地方编写一个 shell 脚本。 您需要在 shell 脚本中导出 PATH 和 GEM_HOME。 shell脚本会是这样的:

    #!/bin/bash
    export PATH = /usr/local/rvm/gems/ruby-1.9.3-p194
    export GEM_HOME = /usr/local/rvm/gems/ruby-1.9.3-p194
    cd /path/to/ruby_script
    ruby file_name.rb
    

    您将通过以下命令获得 PATH 和 GEM_HOME:

    echo $PATH
    echo $GEM_HOME 
    

    【讨论】:

      【解决方案4】:

      这个问题是针对 linux 环境的,但这个答案可能会对将来偶然发现这个问题的 Windows 用户有所帮助。

      有一些用于 Ruby 的打包 Gems here

      最受欢迎的是OCRA(一键式 Ruby 应用程序),它可以作为 Gem 和独立 Ruby 文件使用,并将您的 Ruby 项目打包成 Windows 可执行文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-26
        • 2014-02-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多