Заголовок - это вопрос, а вот контекст, который его подсказывает.
Gemfile:
source "http://rubygems.org"
# Specify your gem's dependencies in the gemspec
gemspec
Вот верх файла рэка:
require 'rubygems'
require "bundler/setup"
При запуске файла Rackup выдается ошибка:
<module:Rack>': GemName is not a class (TypeError)
Почему? Потому что я пишу кусок промежуточного программного обеспечения Rack, и стандартная компоновка:
lib/
rack/
gem_name.rb
gem_name/
version.rb
gem_name.rb будет содержать:
module Rack
class GemName
version.rb будет содержать:
module Rack
module GemName
VERSION = "0.0.1"
Наконец, gem_name.gemspec будет содержать:
require "rack/flash-in-the-pan/version"
#...
s.version = Rack::GemName::VERSION
Наименование модуля и класса с одинаковым именем не является проблемой , если вам не требуются оба файла одновременно. Обычно , это не так Это может произойти, так как вам нужна либо версия для сборки гема, либо вам нужно запустить библиотеку гемов, требуется только одно или другое.
Но на этот раз я решил использовать Bundler для управления зависимостями драгоценного камня. Когда требуется библиотека gem через компоновщик, она, очевидно, тоже запускает gemspec. Я могу легко «исправить» это, я определяю номер версии вручную в gemspec.
Итак, вернемся к моему вопросу - зачем Bundler искать в gemspec время выполнения библиотеки?
связка (1.0.21)
Любое понимание очень ценится.