- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想在我的 ruby 脚本的 header 中指定要使用的 ruby 解释器和 gemset。类似的东西
#!/usr/bin/env source /usr/local/lib/rvm && rvm ruby-1.9.2@system
会很棒。
关于如何做到这一点有什么建议吗?
最佳答案
tcurdt 的帖子有点误导。在我的系统上,我只是在系统上将 rvm(ree、1.8.7 和 1.9.2 rubies)设置为 root。我的/usr/local/bin 看起来像这样:
lrwxrwxrwx 1 root rvm 46 Mar 13 06:50 ree-1.8.7-2011.03 -> /usr/local/rvm/wrappers/ree-1.8.7-2011.03/ruby
lrwxrwxrwx 1 root rvm 44 Mar 13 06:42 ruby-1.8.7-p334 -> /usr/local/rvm/wrappers/ruby-1.8.7-p334/ruby
lrwxrwxrwx 1 root rvm 44 Mar 11 22:42 ruby-1.9.2-p180 -> /usr/local/rvm/wrappers/ruby-1.9.2-p180/ruby
在 tcurdt 的示例中,我没有名为 system 的 gemset。所以我相信实现你所追求的目标的合适方法是这样的:
#!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180
这里对 rvm 所做的一些解释:rvm 创建包装器脚本 (/usr/local/rvm/wrappers/*),它设置诸如 GEM_PATH
和 GEM_HOME
之类的东西。这些是必需的,以便 gems 可以作为特定版本的 ruby 的一部分正确加载。当您对 rvm 进行系统安装时,将在 /usr/local/bin
下创建这些包装器脚本的链接。如果您自己安装了 rvm,它们位于此处:$HOME/.rvm/bin
。
在 shebang 行 (#!/....) 前加上 /usr/bin/env
是很重要的。如果您只是尝试将其直接指向 ruby (例如#!/usr/local/bin/ruby-1.9.2-p180)是不够的。这是因为这些包装器实际上并不是 ruby 解释器,它们是 shell 脚本,在调用您的脚本作为 ruby 解释器的参数之前获取环境设置,如下所示:
source "/usr/local/rvm/environments/ruby-1.9.2-p180"
exec ruby "$@"
$@
是传递给 ruby 的 shell 脚本名称。
最后这是我在 cgi-bin 目录中运行的示例脚本:
#!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180
puts "Content-Type: text/html"
puts
puts "<html>"
puts "<body>"
puts "<h1>Hello Ruby!</h1>"
puts "<p>shebang: #!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180</p>"
puts "<p>RUBY_VERSION: " + RUBY_VERSION + "</p>"
puts "<p>RUBY_PLATFORM: " + RUBY_PLATFORM + "</p>"
puts "<p>RUBY_RELEASE_DATE: " + RUBY_RELEASE_DATE + "</p>"
puts "</body>"
puts "</html>"
关于ruby - 在脚本头中选择 rvm gemset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5199292/
我是一名优秀的程序员,十分优秀!