Как правильно настроить или настроить пользовательский гем с интеграцией RSPEC - PullRequest
0 голосов
/ 02 октября 2018

Я делаю простой гем и пытаюсь добавить к нему rspec.Но возникли проблемы с настройкой: (* ​​1001 *

Gemfile

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gemspec

# gem "rails" # as requested
gem 'rspec-rails', '~> 3.7'
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'database_cleaner', '~> 1.5'
gem 'factory_girl_rails', '~> 4.5.0'
gem 'faker', :git => 'https://github.com/stympy/faker.git', :branch => 'master'

my_gem.gemspec

# coding: utf-8
lib = File.expand_path("../lib", __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require "my_gem/version"

Gem::Specification.new do |spec|
  spec.name          = "my_gem"
  spec.version       = MyGem::VERSION
  spec.authors       = ["Test Test"]
  spec.email         = ["test@gmail.com"]
  ....
  ....
  spec.add_dependency "rails" # as requested
  spec.add_development_dependency "bundler", "~> 1.16"
  spec.add_development_dependency "rake", "~> 10.0"
  spec.add_development_dependency "rspec", "~> 3.0"

end

spec / spec_helper.rb

require 'bundler/setup'
Bundler.setup
require "my_gem"

RSpec.configure do |config|
  # Enable flags like --only-failures and --next-failure
  config.example_status_persistence_file_path = ".rspec_status"

  # Disable RSpec exposing methods globally on `Module` and `main`
  config.disable_monkey_patching!
  # config.include FactoryGirl::Syntax::Methods
  config.expect_with :rspec do |c|
    c.syntax = :expect
  end
end

test_spec.rb

require 'spec_helper'

RSpec.describe MyGem do
  it "has a version number" do
    expect(MyGem::VERSION).not_to be nil
  end
end

lib / my_gem.rb

require "my_gem/version"
require 'my_gem/engine'

module MyGem
   #....
end

lib / my_gem / engine.rb

require 'my_gem'

module MyGem
  class Engine < Rails::Engine
    isolate_namespace MyGem

    config.generators do |g|
      g.test_framework :rspec
      g.fixture_replacement :factory_girl, :dir => 'spec/factories'
    end

    config.autoload_paths   += Dir.glob(File.join(MyGem::Engine.root, 'app','controllers', '**/'))
  end
end

lib / my_gem / version.rb

module MyGem
  VERSION = "0.1.0"
end

НО работает ...

bundle exec rspec spec/test_spec.rb 

NameError:
uninitialized constant MyGem::Rails
# ./lib/mu_gem/engine.rb:4:in `<module:MyGem>'

Помогите пожалуйста как правильно настроить / настроить его и прочее при добавлении Rspec. Спасибо!

1 Ответ

0 голосов
/ 02 октября 2018

Вы ссылаетесь на Rails::Engine в своем коде, но в ваших зависимостях нет драгоценного камня rails.

...