2015-10-05 45 views
-1

我有以下內容的Ruby腳本:東西是錯誤的`#`在Ruby腳本(家當)(hashbang)

#!/data1/thirdparty/ruby/bin/ruby -I/data1/thirdparty/ruby/lib/ruby/2.0.0 -I/data1/thirdparty/ruby/lib/ruby/gems/2.0.0/gems/ruby-net-ldap-0.0.4 -I/data1/thirdparty/ruby/lib/ruby/site_ruby/2.0.0 -I/data1/thirdparty/ruby/lib/ruby/2.0.0/i686-linux 

當我運行它引發以下錯誤的腳本:

<internal:gem_prelude>:1:in `require': cannot load such file -- rubygems.rb (LoadError) 
     from <internal:gem_prelude>:1:in `<compiled>' 

我把程序的strace的,發現這個在strace的:

open("/data1/thirdparty/ruby/lib/ruby/2.0.0 -I/data1/thirdparty/enc/encdb.so", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) 

所以它看起來像紅寶石是無法處理-I正確,因爲它將它包含在文件路徑本身中。我如何強制腳本使用-I作爲包含路徑指令?

+0

這有什麼好做的Ruby。這是關於如何正確使用您的操作系統,因此屬於[超級用戶](http://superuser.com/)。它基本上只是「我如何在我的shell中調用程序」的變體。 –

+0

http://stackoverflow.com/a/4304187/2988 –

回答

1

試試這個:

#!/bin/bash 
exec /data1/thirdparty/ruby/bin/ruby -I/data1/thirdparty/ruby/lib/ruby/2.0.0 -I/data1/thirdparty/ruby/lib/ruby/gems/2.0.0/gems/ruby-net-ldap-0.0.4 -I/data1/thirdparty/ruby/lib/ruby/site_ruby/2.0.0 -I/data1/thirdparty/ruby/lib/ruby/2.0.0/i686-linux -x "$0" "[email protected]" 

#!ruby 
p "this is my ruby code" 
1

我會使用rvm和bundler。然後,您可以使用rvm包裝器(例如,如果在cron作業中運行)調用腳本,或使用bundle exec進行開發。您將需要配置好您的*.gemspec(例如運行bundle new mygem並查看mygem.gemspec)。

另一種可能性將是寫一個shell腳本,包括

/data1/thirdparty/ruby/bin/ruby -I/data1/thirdparty/ruby/lib/ruby/2.0.0 -I/data1/thirdparty/ruby/lib/ruby/gems/2.0.0/gems/ruby-net-ldap-0.0.4 -I/data1/thirdparty/ruby/lib/ruby/site_ruby/2.0.0 -I/data1/thirdparty/ruby/lib/ruby/2.0.0/i686-linux <yourfile.rb> 

Btw。 #!行稱爲shebang或hashbang,以防您想要研究發生的情況。