gpt4 book ai didi

gem - bin stub - 缺少 gem 的依赖项(在 gem 中执行 rake 任务)

转载 作者:行者123 更新时间:2023-12-04 04:44:56 27 4
gpt4 key购买 nike

我写了一个 gem elastic-beanstalk这将在 rails 项目文件结构中使用,以及在 rails 目录和文件不可用(无需解压缩等)的独立 CI 环境中使用。即正在运行的 Bamboo 构建过程 eb:package将产生一件初级神器 app.zip稍后部署计划以及可能在另一个代理上的部署计划可以接管并执行 eb:deploy .

目标

当在 rails 项目结构中时,这一切运行良好,所以我的目标是在独立 CI 环境中运行它。

给定的

一个空目录(CI 环境),只有 app.zip , eb.yml , binstubs 创建,并且 gem 可用

什么时候

我跑 elastic-beanstalk eb:deploy
然后

它应该运行等效于 rake eb:deploy使用这个 gem 的依赖项和 lib 文件。

更新 - Bin Stub

看起来 bin stub 可能是我正在寻找的。探索another SO post ,我已经尝试过(到目前为止无济于事)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 是要走的路:

如何解决 bin stub 的依赖问题?

最佳答案

最终,我需要调用 Bundler.setup来解决依赖。

清理后,下面的文件是我唯一需要使用 gem 内的 bin 文件调用 rake 任务的文件(外部 bin stub 使用此文件):

垃圾桶/ Elastic Beanstalk

#!/usr/bin/env ruby
require 'rake'
require 'bundler'

raise "Bundler is required. Please install bundler with 'gem install bundler'" unless defined?(Bundler)

#
# Example:
#
# elastic-beanstalk eb:show_config
# elastic-beanstalk eb:show_config[1.1.1]
#

# init dependencies
Bundler.setup

# init rake
Rake.application.init

# load the rake tasks
gem_dir = File.expand_path('..',File.dirname(__FILE__))
load "#{gem_dir}/lib/elastic/beanstalk/tasks/eb.rake"

# invoke the given task
Rake.application.invoke_task(ARGV[0])

关于gem - bin stub - 缺少 gem 的依赖项(在 gem 中执行 rake 任务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18340795/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com