Мне действительно нужно CSV Gem с Rails? - PullRequest
0 голосов
/ 28 мая 2018

Мой вопрос прост:

Должен ли я require 'csv' в классе, использующем Ruby on Rails?

Если я открою rails console и попытаюсь использовать гем CSV, это сработает, но я должен сделать это в файле?

1 Ответ

0 голосов
/ 28 мая 2018

Библиотека CSV является частью стандартной библиотеки ruby;это не гем (то есть сторонняя библиотека).

Как и во всей стандартной библиотеке (в отличие от библиотеки core ), csv автоматически не загружается интерпретатором ruby,Так что да, где-то в вашем приложении вам нужно require it:

irb(main):001:0> CSV
NameError: uninitialized constant CSV
        from (irb):1
        from /Users/tomlord/.rbenv/versions/2.4.4/bin/irb:11:in `<main>'
irb(main):002:0> require 'csv'
=> true
irb(main):003:0> CSV
=> CSV

В большом проекте, таком как приложение rails, вы можете обнаружить, что csv действительно имеетуже был загружен;возможно, где-то «неясным», например, внутри драгоценного камня, или где-то в config/initializers/*, или config/application.rb.

Однако, обычно плохая идея полагаться на библиотеки, загружаемые в «несвязанных» местах, подобных этому;это может привести к непреднамеренному взлому другого кода при его изменении или к постепенной загрузке здесь все большего количества библиотек, даже если некоторые из них больше не нужны.

Короче говоря, да, я бы сказал,рекомендуем писать require 'csv' в начале любого файла, который использует библиотеку CSV.Или, в рамках более крупного проекта, который будет явно нуждаться в том, чтобы эта библиотека загружалась и использовалась во многих местах, вы могли бы рассмотреть возможность ее глобальной загрузки в таких местах, как config/application.rb

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