Bundler.require не работает для ActiveRecord в моем драгоценном камне - PullRequest
3 голосов
/ 25 октября 2010

Я только что создал новый гем (используя bundler) и хочу добавить поддержку Active Record. Поэтому я добавил s.add_dependency "activerecord", "~> 3.0" к моей спецификации. Затем я использовал Bundler.setup и Bundler.require и подумал, что у меня есть доступ к Active Record сейчас, но у меня нет. Я должен явно использовать require "active_record". Любая идея, почему Bundler.require не работает для меня в этом случае?

Ответы [ 3 ]

12 голосов
/ 04 января 2011

Во-первых, если вы упаковываете драгоценный камень, не используйте Bundler.require.Bundler.require предназначено для приложений, а не для драгоценных камней.

  • В .gemspec укажите зависимости развернутого гема.

  • В вашем Gemfile, включите строку gemspec для автоматического включения зависимостей, перечисленных в вашем .gemspec, в ваш Gemfile.

    Вы также можете по желанию создать группы гемов для dev и test.

  • В вашем коде явно require любые библиотеки, которые вам нужны.

Сегодня я потерял пару часов, поэтому надеюсь, что это поможет.

(Источники 1 , 2 )

Во-вторых, хотя гем ActiveRecord называется "activerecord",lib называется "active_record".Это то, что вам нужно в Gemfile.

gem 'activerecord', :require => "active_record"

Если вы не включите параметр :require, ActiveRecord не будет загружен правильно, и вы не узнаете об этом, пока не попробуете его использовать..

1 голос
/ 25 октября 2010

Если вы хотите использовать Bundler, вам нужно определить свой Gemfile с помощью Activerecord

gem 'activerecord', "~> 3.0.0"

Или вам нужно определить bundler для использования вашей gemspec с добавлением gemspec в ваш Gemfile

gemspec

См. http://gembundler.com/rubygems.html

0 голосов
/ 07 августа 2016

У меня была эта проблема, и проблема в моем случае заключалась в том, что я называл каталог в своей активной записи gem, как в:

lib ->
  active_record ->
    base.rb <- containing some monkey patches to base

Это вызывало массовую путаницу, включая приятные сообщения об ошибках типа:

Gem Load Error is: uninitialized constant ActiveRecord::Base
Did you mean?  ActiveRecord::Base

Простое перемещение, изменив файл с lib/active_record/base.rb на lib/active_record_base.rb, исправило это для меня.

...