ruby中require自己文件

2016-10-01 19:20:17来源:CSDN作者:ChangHongJian人点击

在ruby中require可以加载gem安装的ruby程序,require的查找应该是在$LOAD_PATH 这个数组里面的。从这里面可以看到一个 lib/ruby/2.1.0/ 字样的路径,这就是一般ruby库放置的路径,我自己的库也放在这里,为了方便,先建立一个文件夹取名为 _chj,即我自己的文件放置在 lib/ruby/2.1.0_chj中。然后就可以在这里放置自己的ruby文件了。
比如我的一个ruby文件取名为 chj.rb 那么引用的时候就这样require "_chj/chj"
下面给出我自己的一个例子,chj.rb

module CHJmethod#- 文件保存与读取def save(obj,fname,type="w")    File.open(fname,type,:encoding=>"utf-8") {|f| f.write obj}enddef read(fname)    File.open(fname,"r",:encoding=>"utf-8") {|f| f.read}end#- markdown 解析def md_to_html(fname)    require 'kramdown'    save(Kramdown::Document.new(read(fname+".md")).to_html,fname+".html")end# alias dst srcalias :md_to_txt :md_to_html #- 动态代码修改,非常便于调试,可在此基础上扩展def hotdebug(rb_file)    if ! File.exist?(rb_file)        STDERR.puts "CHJERROR: no such file #{rb_file}"        return false    end    _CHJ_LINE_="begin"    begin        _CHJ_LINE_.strip!        if _CHJ_LINE_== "q"            break # exit        else            # trap ( :INT) { puts 'interrupt ' }  # 这样防止了 ctrl+c中断            begin              load(rb_file,false) # rb_file 文件中是你的程序            rescue Exception => e              puts "CHJINFO: #{e}"            end            STDIN.flush        end         puts "CHJINFO: run end #{rb_file} "    end while _CHJ_LINE_=getsend#- erb 模板替换def hd_erb(string,func_binding)    require "erb"    ERB.new(string).result(func_binding)endend # module 

由于我写在了module 中使用的时候如下:

require "_chj/chj"include CHJmethod#CHJmethod::hotdebug("aa.txt")str= CHJmethod::read("aa.txt")def my_binding    title="CHJ"    chj="hong mao da xia"    bindingendputs hd_erb(str,my_binding)

其中hotdebug是我最得意的想出来的函数。

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台