Я написал гем elastic-beanstalk, который будет использоваться внутри файловой структуры проекта rails. , а также в автономной среде CI, где директория и файлы rails недоступны (без распаковки и т. д.). то есть процесс сборки Bamboo, запущенный eb:package
, даст один основной артефакт app.zip
, где план развертывания в более позднее время и, возможно, на другом агенте может взять на себя и выполнить eb:deploy
.
Цель
Все это работает нормально, когда внутри структуры проекта rails, поэтому моя цель здесь — также запустить это для автономной среды CI.
Дано
пустой каталог (среда CI) только с созданными app.zip
, eb.yml
, binstubs, и гем доступен
Когда
Я бегу elastic-beanstalk eb:deploy
потом
он должен запускать эквивалент rake eb:deploy
, используя зависимости этого гема и файлы lib.
Обновление — корзина-заглушка
Похоже, что я ищу заглушку для мусорного ведра. Изучая другой пост SO, я пробовали (пока безрезультатно) bin/elastic-beanstalk
:
gem_dir = File.expand_path('..',File.dirname(__FILE__))
$LOAD_PATH.unshift gem_dir# Look in gem directory for resources first.
lib = File.expand_path('lib', gem_dir)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'elastic/beanstalk'
require 'rake'
require 'pp'
pwd=Dir.pwd
Dir.chdir("#{gem_dir}/bin") # We'll load rakefile from the gem's bin dir.
Rake.application.init
Rake.application.load_rakefile
Dir.chdir(pwd) # Revert to original pwd for any path args passed to task.
Rake.application.invoke_task(ARGV[0])
Итак, это работает, но все еще не работает с той же проблемой зависимости, которую я начал с undefined method 'safe_load_file' for Psych:Module (NoMethodError)
. Хотя я думаю, что binstub - это путь: