Проверка наличия драгоценных камней с помощью local: path перед развертыванием

#ruby-on-rails #ruby #bundler

#ruby-on-rails #ruby #bundler

Вопрос:

Для некоторых приложений Rails я хотел бы иметь надежную защиту при развертывании, чтобы проверить, есть ли у меня некоторые драгоценные камни, настроенные для поиска по локальному пути.

Немного контекста может помочь понять.

Когда я нахожусь в режиме разработки, я хочу иметь драгоценный камень в «локальном режиме». В моем Gemfile он настроен следующим образом: gem 'my_gem', '~> 0.9', :path => './path/to/my_gem' .

В рабочей среде я хочу быть таким: gem 'my_gem', '~> 0.9', :git => 'git@git.example.com:my_gem.git' .

Я попытался создать сценарий оболочки (или функцию) для чтения Gemfile.заблокируйте и завершите работу с ошибкой, если драгоценный камень находится в «локальном режиме».

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

Любая помощь будет оценена. Спасибо

Ответ №1:

Используйте

 group :development do
  gem 'my_gem_for_development', '~> 0.9', :require => './path/to/my_gem/lib/my_gem.rb' , :path => './path/to/my_gem/lib'
end
group :production do
  gem 'my_gem', '~> 0.9', :git => 'git@git.example.com:my_gem.git'
end
  

Комментарии:

1. Вы как будто прочитали мои мысли, собрали все перемешанные фрагменты и сформировали из них целостный ответ, созданный самими богами.

2. Спасибо, кажется, это хорошая идея. Но это не помогает мне проверить, правильно ли я внес свои изменения в драгоценный камень, прежде чем я зафиксирую / разверну приложение Rails. Вот почему я хотел провести проверку перед фиксацией или перед развертыванием в приложении. Я уже чувствую ситуацию, когда у меня все будет отлично работать в режиме разработки, но в рабочей среде у драгоценного камня не будет нужной версии.

3. Может быть, вам действительно стоит написать какую-нибудь задачу gem или rake и поместить ее в свой рецепт capistrano

4. Кстати, stackoverflow, отправка комментария при возврате нажатия клавиши — ПЛОХАЯ ИДЕЯ! KTHXBYE

5. jlecour Я нашел решение, позволяющее избежать этого исключения, я пытаюсь использовать его на mysql2 gem, и это работает, это должно помочь и вам. Смотрите мой пост, я его отредактировал.

Ответ №2:

Это драгоценный камень, который вы разрабатываете? Почему бы просто не написать драгоценный камень, чтобы посмотреть на rails env и изменить настройки на основе этого. Затем вы можете использовать одну каноническую версию драгоценного камня, и вам не придется беспокоиться о проверке, какую версию драгоценного камня вы используете. В противном случае решение bor1s будет работать просто отлично.

Комментарии:

1. Кстати, у вас есть отличная идея!!

2. Извините, но я не совсем понимаю вашу идею относительно rails env и изменения настроек.