рельсовый двигатель gemfile.lock не входит рельсовый двигатель - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь построить двигатель рельсов, и у меня есть несколько драгоценных камней, которые я хочу выделить и связать только в движке рельсов Gemfile. Я положил эти драгоценные камни в свой Gemfile:

source 'https://rubygems.org'
gemspec
gem "pg", "0.15"

В моем страховом .gemspec:

$:.push File.expand_path("../lib", __FILE__)

# Maintain your gem's version:
require "insurance/version"

# Describe your gem and declare its dependencies:
Gem::Specification.new do |spec|
  spec.name        = "insurance"
  spec.version     = Insurance::VERSION
  spec.authors     = ["Engine Sample"]
  spec.email       = ["engine@engine.com"]
  spec.homepage    = "https://github.com/engine/engine_plugin"
  spec.summary     = "Engine Sample."
  spec.description = "Engine Sample."
  spec.license     = "MIT"

  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
  # to allow pushing to a single host or delete this section to allow pushing to any host.
  if spec.respond_to?(:metadata)
    spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
  else
    raise "RubyGems 2.0 or newer is required to protect against " \
      "public gem pushes."
  end

  spec.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.md"]

  spec.add_dependency "rails", "~> 5.0.1"
  spec.add_development_dependency "route_translator"
end

Затем я подхожу к своему двигателю на терминале и запускаю bundle install, который генерирует Gemfile.lock в папке с моим двигателем.

Затем я иду в основное приложение и добавляю в основное приложение Gemfile это:

gem 'insurance', path: '/home/Documents/Projects/insurance'

Я также создал несколько маршрутов в папке своего движка config/routes.rb

но когда я запускаю свое приложение, я получаю эту ошибку

Gem::LoadError - pg is not part of the bundle. Add it to your Gemfile.:

1 Ответ

0 голосов
/ 23 мая 2019

Rails-движки на самом деле являются гемами, они должны полагаться на Gemfile.lock родительского приложения и указывать только зависимости в своей гемспецификации.

Если вы хотите, чтобы какой-то гем был зависимостью от движка - добавьте его в gemspec, а если хотите заблокировать точную версию - сделайте это в объявлении зависимости (но на самом деле лучше указать более свободную версию) :

spec.add_dependency "pg", "0.15" # better use something like "~>0.15" here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...