Подтвердить что ты не робот

Как изменить жемчужину Ruby

Как изменить существующий файл *.gem? Я хочу изменить Rakefile в камне, чтобы он мог компилироваться в Windows.

4b9b3361

Ответ 1

Вы можете gem unpack его, добавить свою модификацию, а затем изменить gemspec, если необходимо, и снова создать его:

Ответ 2

Загрузите исходный код в отдельную папку (возможно, из github). Затем измените свой Gemfile, чтобы напрямую указать на источник, чтобы вы могли отредактировать его и проверить свои изменения напрямую.

Например, скажем, что вы хотите редактировать драгоценный камень secure_headers и клонировать его в ~/workspace/secureheaders. Затем вы можете использовать следующее в своем Gemfile:

gem 'secure_headers', :path => "~/workspace/secureheaders"

Затем просто измените исходные файлы внутри исходного дерева, и вы сможете увидеть, как ваши изменения применяются напрямую.

Ответ 3

Более новые версии bundler позволяют сделать это с помощью следующей команды:

bundle open gem_to_edit

Это откроет код драгоценного камня в текстовом редакторе по умолчанию.

(Подсказка: если вы находитесь на Mac OSX/Linux, вы можете указать текстовый редактор по умолчанию, изменив переменную $EDITOR. Скажем, вы находитесь на bash, вы можете просто открыть свой ~/.bash_profile и добавить: export EDITOR='subl -w' для установки Sublime Text в качестве редактора по умолчанию)

Ответ 4

Возможно, более приемлемым и открытым исходным кодом для этого было бы проверить, доступен ли источник драгоценных камней на чем-то вроде github. Затем создайте вилку кода драгоценного камня, внесите изменения и отправьте запрос на растяжение. Скорее всего, кто-то еще хочет эту функциональность, и вы будете объявлены за свой вклад.

Ответ 5

Если вам не хватает gemspec для драгоценного камня, извлеките его с помощью этой команды:

gem spec my_gem --ruby > my_gem.gemspec

Конечно, заменив my_gem соответствующим именем gem. Отредактируйте полученный файл, чтобы он поместился (в одном примере мне пришлось удалить строку, которая вызвала ошибку), и вам должно быть хорошо идти.