Невозможно запустить Ruby gem в отдельном файле

Ниже приведен гем, который я создал просто для того, чтобы открыть файл text/README.md и вытащить первую и последнюю строку. Сборка драгоценного камня работает правильно, однако, если я пытаюсь запустить отдельный файл, который вызывает созданный мной драгоценный камень, я получаю следующее сообщение об ошибке:

/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>'

Ниже приведен файл, который я пытаюсь использовать для запуска моего драгоценного камня. Этот файл занимает командную строку, в которой вы указываете файл, который вы хотите, чтобы мой драгоценный камень читал.

#!/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 ответ

Решение

Это опечатка. Вы напечатали это как Myfile при попытке позвонить, а не MyFileИмя константы.

Другие вопросы по тегам