Bundler.require не работает на ActiveReCord в моем драгоценном камне

StackOverflow https://stackoverflow.com/questions/4016929

Вопрос

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

Это было полезно?

Решение

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

  • В .gemspec, Укажите зависимости вашего развернутого драгоценного камня.

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

    Вы также можете при желании создавать группы GEM для Dev и Test.

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

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

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

Во-вторых, хотя GEM ActiveRecord называется «ActiveReCord», Lib называется «Active_record». Это то, что вам нужно в Gemfile.

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

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

Другие советы

Если вы хотите, чтобы использовать Bundler, вам нужно определить свой драгоценный файл с ActiveSerecord

gem 'activerecord', "~> 3.0.0"

Или вам нужно определить Bundler, чтобы использовать ваши Gemspec с добавлением GEMSPEC в вашем драгоценном стиле

gemspec

Видеть http://gembundler.com/rubygems.html.

У меня была эта проблема, и проблема в моем деле заключалась в том, что я назвал каталог в моем GEM Active Record, как в:

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 Исправлено это для меня.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top