我有一个充满ruby脚本的目录用于常见任务,我已经开始积累一组常见变量和方法,我发现自己在每个新脚本中定义.改进这一步骤的下一步似乎是创建一个文件(例如,commonstuff.rb)并从其他脚本中"需要"该文件,以便公共变量和方法在所有地方都可用并且只定义一次.
一个不起作用的简单尝试:
commonstuff.rb
username=ENV['USER']
home_dir_path=ENV['HOME']
def print_and_execute(command, &block)
puts command
process_io = IO.popen(command + "2>&1")
while(line=process_io.gets)
if (block != nil)
yield line
else
puts line
STDOUT.flush
end
end
endRun Code Online (Sandbox Code Playgroud)
script1.rb
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/common_stuff'
puts home_dir_path # Fail
print_and_execute "date" # FailRun Code Online (Sandbox Code Playgroud)
我已经使用了ruby库和框架,但我目前的环境中没有任何可用的.我只是直接的红宝石,我对一些在这里运作良好的基本习语有点生疏,或者看起来对红宝石专家来说是正确的.
任何帮助赞赏!
将您的方法和变量包装在一个模块中,例如
module CommonStuff
USERNAME=ENV['USER']
HOME_DIR_PATH=ENV['HOME']
def print_and_execute(command, &block)
...
end
end
Run Code Online (Sandbox Code Playgroud)
然后script1.rb可能是这样的:
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/commonstuff.rb'
include CommonStuff
puts HOME_DIR_PATH # Win
print_and_execute "date" # Win
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想在命名空间中包含该模块:
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/commonstuff.rb'
puts CommonStuff::HOME_DIR_PATH # Win
CommonStuff.print_and_execute "date" # Win
Run Code Online (Sandbox Code Playgroud)
另请参见模块和模块上的Programming Ruby页面.
| 归档时间: |
|
| 查看次数: |
2490 次 |
| 最近记录: |