#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 и изменения настроек.