Библиотека 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