ruby在一行中执行远程脚本.(比如安装rvm)

c2h*_*2h2 4 ruby linux bash shell

在一行示例中安装rvm:

user$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
Run Code Online (Sandbox Code Playgroud)

现在,假设我在http://blah.com/helloworld.rb上有这样的ruby脚本

puts "what's ur name?"
name = gets.chomp
puts "hello world from web, #{name}"
Run Code Online (Sandbox Code Playgroud)

我希望在我的shell中实现它,而无需在一行中创建临时文件或甚至更好的一个命令.

wget http://blah.com/helloworld.rb; ruby helloworld.rb; rm helloworld.rb
Run Code Online (Sandbox Code Playgroud)

我试过这个,但由于早期的管道,用户提示将被忽略.

curl -s http://blah.com/helloworld.rb | ruby
Run Code Online (Sandbox Code Playgroud)

执行远程ruby脚本的正确方法是什么?谢谢!

Bjö*_*son 6

像这样:

ruby < <(curl -s http://blah.com/helloworld.rb)
Run Code Online (Sandbox Code Playgroud)

Ruby类似于bash评估shell代码的方式来评估ruby代码


小智 6

来自http://brew.sh/

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
Run Code Online (Sandbox Code Playgroud)


rgo*_*rgo 5

另一个基于Caliber的Ruby选项安装shell脚本:

ruby -e "require 'open-uri'; system open('http:// or local file').read"
Run Code Online (Sandbox Code Playgroud)

Ruby脚本也是如此:

ruby -e "require 'open-uri'; eval open('http:// or local file').read"
Run Code Online (Sandbox Code Playgroud)

编辑:修复了缺失的引用并添加了Ruby脚本执行