无法在单独的文件中运行Ruby gem

时间:2013-02-17 21:39:11

标签: ruby-on-rails ruby gem binaryfiles

下面是我创建的一个gem,只是为了打开text / README.md文件并拉出第一行和最后一行。 gem构建正常,但是如果我尝试运行一个调用我构建的gem的单独文件,则会收到以下错误消息:

/usr/local/rvm/gems/ruby-1.9.3-p194/gems/nrodruck_test_gem-0.0.1/bin/test_gem:8:in 
`<top (required)>': uninitialized constant TestGem::Myfile (NameError)
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/test_gem:19:in `load'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/test_gem:19:in `<main>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `eval'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `<main>'

以下是我试图用来运行我的gem的文件。此文件采用put中的命令行,您可以在其中指定希望我的gem读取的文件。

#!/usr/bin/env ruby

require 'test_gem'

puts "test_gem script executing"
puts ARGV[0]

puts TestGem::MyFile.first( ARGV[0] )

这是宝石:

$LOAD_PATH.unshift File.expand_path("../test_gem", __FILE__)

require 'version'
require 'hello'

module TestGem

  puts "module TestGem defined"

  class MyFile

    def self.first(filename)
        File.open(filename, "r") {|f| f.readline}
    end

    def self.last(filename)
        File.open(filename, "r")[-1]
    end 
  end   
end

修改

错误根据评论修复,仍然收到相同的错误消息。

/usr/local/rvm/gems/ruby-1.9.3-p194/gems/nrodruck_test_gem-0.0.1/bin/test_gem:8:
in `<top (required)>': uninitialized constant TestGem::Myfile (NameError)
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/test_gem:19:in `load'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/test_gem:19:in `<main>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `eval'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `<main>'

1 个答案:

答案 0 :(得分:0)

这是一个错字。您在尝试调用它时将其键入Myfile,而不是MyFile,即常量的名称。