Как избежать перезаписи исходного кода при компиляции Gem?

Я пытаюсь установить eventmachine Gem, однако нужно закомментировать строку в исходном коде чтобы это работало на Ruby 2.0 в Windows x64.

Я попытался изменить исходный код Gem в папке сборки Ruby, но каждый раз, когда я запускаю gem install eventmachine, он перезаписывает мои изменения. Из справки командной строки не видно способа пересобрать гем без распаковки свежего исходного кода, однако может быть обходной путь.

Есть ли способ создать мой слегка измененный исходный код для этого Gem?


person Brendan    schedule 30.04.2013    source источник


Ответы (2)


Не устанавливайте драгоценный камень таким образом. Вместо этого создайте свою собственную версию и установите ее, указав путь к файлу .gem, который создается как часть процесса сборки.

Я обнаружил, что самый простой способ сделать это правильно — создать вилку, установить путь git вилки в ваших Gemfile и bundle install, которые позаботятся о компиляции и правильной установке.

person tadman    schedule 01.05.2013
comment
Привет, спасибо за ответ. Я новичок в Ruby (на моем компьютере он есть только для запуска клиента AppFog). Я попытался создать файл с именем Gemfile и включить его в произвольный каталог. Он содержит gem 'eventmachine', :git => 'git://github.com/brendanarnold/eventmachine.git', в этом каталоге я затем запускаю gem install eventmachine, однако он по-прежнему загружает официальный источник - я делаю что-то не так? - person Brendan; 01.05.2013
comment
Ах, я не использовал bundle, я использовал gem, это, вероятно, сработает, но у меня это работает по-другому, все равно спасибо! - person Brendan; 01.05.2013
comment
Да, я пытался сказать, что gem install всегда извлекает из канонического источника, если вы не укажете ему путь к локальному .gem файлу. bundle install будет делать все, что указано в вашем Gemfile, включая пользовательские сборки. - person tadman; 01.05.2013

Хорошо, разобрался благодаря помощи @tadman.

В итоге просто установили локально из исходного кода, а не настроили официальный исходный код, загруженный gem, и предотвратили его перезапись. Это точные шаги...

  • Клонировать локально с Github (или откуда угодно)
  • Внесите изменения в источник
  • If there is a .gemspec file in the root directory
    • Open terminal in the directory and enter gem build GEMNAME.gemspec
    • Наконец введите gem install GEMNAME-VERSION.gem
  • Если нет .gemspec, но есть файл с именем "gem" или "build" или что-то подобное, вам, возможно, придется выполнить сборку с использованием rake согласно этому ответу
person Brendan    schedule 01.05.2013
comment
Кстати, исходный код скомпилировал и установил Gem, но оказалось, что он все еще не работает при фактическом использовании его в коде. Если кто-то, читающий это, пытается установить eventmachine на Windows x64, мне в конце концов было проще переключиться на Ruby 1.9.3 32bit и работать оттуда - eventmachine сразу скомпилировалась, и теперь я могу запустить клиент AppFog... - person Brendan; 02.05.2013