Как работать с классами и зависимостями в ruby - PullRequest
1 голос
/ 22 января 2012

Я изменил этот вопрос, чтобы лучше отразить то, что я не понимаю.
Например, если я пытаюсь получить доступ к методам в классе RailB AppBuilder.

require 'rails/generators/rails/app/app_generator'
g = Rails::AppBuilder.new
puts g.rakefile.inspect

Я получаю сообщение об ошибке activesupport-3.1.3 / lib / active_support / secure_random.rb: 5: in `': неинициализированная константа SecureRandom (NameError)

Я не понимаю этого. Разве каждый класс не должен быть "независимым" от других классов? Разве это не весь смысл объектно-ориентированного программирования? А теперь, если это не так важно, как я могу выяснить, какие зависимости мне нужно добавить? Это какой-то рабочий процесс, чтобы решить эту проблему? Могу ли я как-то выяснить, какие зависимости добавить, посмотрев документацию? Эта проблема имеет какое-то отношение к пути загрузки? Могу ли я загрузить все зависимости из драгоценного камня, рельсов или чего-то еще? Я просто не понимаю!

Документ: http://api.rubyonrails.org/classes/Rails/AppBuilder.html GitHub: https://gist.github.com/rails/rails/blob/master/railties/lib/rails/generators/rails/app/app_generator.rb

1 Ответ

2 голосов
/ 22 января 2012

Нет простого способа узнать, какие зависимости используются в AppBuilder, потому что большинство зависимостей настроены где-то еще.так что в большинстве случаев вам нужно сделать несколько проб и ошибок, чтобы получить правильные зависимости.

код, который вы разместили, имеет плохой стиль.пожалуйста, ознакомьтесь с тем, как правильно написать код ruby.купите себе книгу, то есть красноречивый ruby, или просто начните читать блоги ruby.

Зависимости в ruby ​​довольно просты.каждый требуемый файл будет загружен, и загрузка будет повторяться через файлы, а затем загружать другие требуемые.загрузка будет работать только в том случае, если все необходимые файлы находятся на load path.этот путь загрузки похож на ваш системный путь, и вы можете добавить в него каталоги, чтобы указать ruby, где искать файлы.

В общем, есть выделенные точки входа для библиотек и их зависимостей.они обычно документируются, поэтому, если вы их используете, вы получаете все зависимости с самого начала.Примером этого может быть require 'rails' для использования rails или require 'active_support/all', если вы просто хотите использовать active-support.если вы не хотите выбирать файлы / классы, вы сами узнаете, какие другие классы вам нужны.эта часть не имеет ничего общего с oop, это скорее проблема зависимости (другие языки имеют явное декларирование зависимостей).

в вашем случае, следующим шагом будет добавление require "securerandom" в начало вашегофайл, а затем проверьте, какая ошибка появляется дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...