У меня есть код Ruby, который обрабатывает Gemfile. Он добавляет некоторые рекомендуемые драгоценные камни и удаляет другие драгоценные камни. Там есть раздел Gemfile, который выглядит следующим образом:
group :development, :test do
# The gem version is a recommended starting place; upgrade if needed.
gem 'pry-rails', '~> 0.3.4'
# Enhance pry with byebug (which gives more debugger commands and other goodies).
# The gem version is a recommended starting place; upgrade if needed.
gem 'pry-byebug', '~> 3.4.0'
# Use rspec for testing
gem 'rspec-rails', '~> 3.5.1'
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platform: mri
end
Я использую следующие две строки, чтобы удалить последние две строки блока (строка gem 'byebug ...
и комментарий над ней).
gsub_file(full_app_gemfile_path, /^\s*gem\s*("|')byebug.*$/, "", verbose: false)
gsub_file(full_app_gemfile_path, /^\s*#.*Call.*("|')byebug("|').*$/, "", verbose: false)
gsub_file
— это метод, предоставляемый драгоценным камнем Thor
. Удаление работает, но я получаю следующий код в Gemfile
group :development, :test do
# The gem version is a recommended starting place; upgrade if needed.
gem 'pry-rails', '~> 0.3.4'
# Enhance pry with byebug (which gives more debugger commands and other goodies).
# The gem version is a recommended starting place; upgrade if needed.
gem 'pry-byebug', '~> 3.4.0'
# Use rspec for testing
gem 'rspec-rails', '~> 3.5.1'
end
Почему эта дополнительная пустая строка вставляется после group :development, :test do
? Это далеко не то место, где линии были удалены. Возможно, это ошибка в драгоценном камне Thor, но мне интересно, проблема ли это в регулярном выражении.
Обновить
Я только что попытался использовать необработанный ruby gsub (чтобы устранить потенциальные проблемы с Thor). Я создал вспомогательный метод
def my_gsub(path, regex, str)
text = File.read(path)
rep = text.gsub(regex, str)
File.open(path, "w") {|file| file.puts rep}
end
Когда я заменяю две строки, которые вызывают gsub_file
, на вызов my_gsub
, теперь я получаю две пустые строки после group :development, :test do
.
gsub
добавляет строку? - person ndnenkov   schedule 10.04.2017gsub
, чтобы Thor можно было исключить из устранения неполадок. Теперь я получаю две пустые строки. - person CodeSmith   schedule 10.04.2017