Необычайно простой рубиновый вопрос: где мой класс? - PullRequest
3 голосов
/ 27 декабря 2008

[Я только начинаю с Руби, но "нет никаких сомнений в том, что новичок", поэтому я тащусь дальше ...]

Все учебники и книги, которые я вижу, идут от Ruby с интерактивной оболочкой к Ruby on Rails. Я не делаю Rails (пока), но я не хочу использовать интерактивную оболочку. У меня есть файл класса (first_class.rb) и Main (main.rb). Если я запускаю main.rb, я, конечно, получаю uninitialized constant FirstClass. Как мне рассказать ruby ​​о first_class.rb?

Ответы [ 3 ]

8 голосов
/ 27 декабря 2008

Самый простой способ - поместить их обоих в один файл.

Однако вы также можете использовать require, например ::

require 'first_class'
3 голосов
/ 28 декабря 2008

Вы также можете использовать автозагрузку следующим образом:

autoload :FirstClass, 'first_class'

Этот код автоматически загрузит first_class.rb, как только будет использован FirstClass. Однако обратите внимание, что текущие реализации автозагрузки не поточно-ориентированы (см. http://www.ruby -forum.com / topic / 174036 ).

2 голосов
/ 28 декабря 2008

Есть еще один момент, который стоит отметить: вы обычно не используете файл main в ruby. Если вы пишете инструмент командной строки, стандартной практикой было бы поместить инструмент в подкаталог bin. Для обычных одноразовых скриптов основная идиома:

if __FILE__ == $0
  # main does here
  # `__FILE__` contains the name of the file the statement is contained in
  # `$0` contains the name of the script called by the interpreter
  # 
  # if the file was `required`, i.e. is being used as a library
  # the code isn't executed.
  # if the file is being passed as an argument to the interpreter, it is.
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...