簡體   English   中英

Ruby CLI 工具不尊重 Gemfile - 我如何從 CLI 工具中使用(遠程與本地)GEM

[英]Ruby CLI tool does not respect the Gemfile - How can I use (remote vs local) GEM's from CLI tool

我創建了一個 CLI 工具,它使用了我自己的一些Klueless - RubyGems項目。

在我的本地機器上,我經常在 GemFile gem "name_of_gem", path: "../name_of_gem"中設置path設置以進行調試。

當我使用這種技術時,我可以在我的其他 GEM 中使用代碼,並且可以從我當前正在開發的 GEM 中立即訪問它。

此技術適用於 RSpec,但不適用於./exe/my_gemname文件。

我不確定我需要在./exe/my_gemname中包含什么才能使其使用 GemFile。

資源

使用 RSpec 時從開發文件夾加載寶石

使用我的開發文件夾

KUtil          : 0.0.28 : ~/dev/kgems/k_util/lib/k_util/version.rb
KLog           : 0.0.34 : ~/dev/kgems/k_log/lib/k_log/version.rb
KType          : 0.0.10 : ~/dev/kgems/k_type/lib/k_type/version.rb
KDecor         : 0.0.8  : ~/dev/kgems/k_decor/lib/k_decor/version.rb
KDoc           : 0.0.37 : ~/dev/kgems/k_doc/lib/k_doc/version.rb
KConfig        : 0.0.10 : ~/dev/kgems/k_config/lib/k_config/version.rb
Peeky          : 0.0.49 : ~/dev/kgems/peeky/lib/peeky/version.rb
KDomain        : 0.0.28 : ~/dev/kgems/k_domain/lib/k_domain/version.rb
KBuilder       : 0.0.76 : ~/dev/kgems/k_builder/lib/k_builder/version.rb
KExt::Github   : 0.0.8  : ~/dev/kgems/k_ext-github/lib/k_ext/github/version.rb
KDirector      : 0.16.1 : ~/dev/kgems/k_director/lib/k_director/version.rb
KFileset       : 0.0.7  : ~/dev/kgems/k_fileset/lib/k_fileset/version.rb
DrawioDsl      : 0.11.8 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/drawio_dsl-0.11.8/lib/drawio_dsl/version.rb
KManager       : 0.0.34 : ~/dev/kgems/k_manager/lib/k_manager/version.rb
KRailsTemplate : 0.0.2  : ~/dev/kgems/k_rails_template/lib/k_rails_template/version.rb

運行 CLI 工具時從已安裝的 GEM 加載 Gem

使用 GEM 安裝文件夾

KUtil          : 0.0.28 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_util-0.0.28/lib/k_util/version.rb
KLog           : 0.0.33 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_log-0.0.33/lib/k_log/version.rb
KType          : 0.0.8  : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_type-0.0.8/lib/k_type/version.rb
KDecor         : 0.0.7  : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_decor-0.0.7/lib/k_decor/version.rb
KDoc           : 0.0.37 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_doc-0.0.37/lib/k_doc/version.rb
KConfig        : 0.0.10 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_config-0.0.10/lib/k_config/version.rb
Peeky          : 0.0.49 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/peeky-0.0.49/lib/peeky/version.rb
KDomain        : 0.0.28 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_domain-0.0.28/lib/k_domain/version.rb
KBuilder       : 0.0.75 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_builder-0.0.75/lib/k_builder/version.rb
KExt::Github   : 0.0.8  : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_ext-github-0.0.8/lib/k_ext/github/version.rb
KDirector      : 0.16.1 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_director-0.16.1/lib/k_director/version.rb
KFileset       : 0.0.6  : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_fileset-0.0.6/lib/k_fileset/version.rb
DrawioDsl      : 0.11.8 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/drawio_dsl-0.11.8/lib/drawio_dsl/version.rb
KManager       : 0.0.33 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_manager-0.0.33/lib/k_manager/version.rb
KRailsTemplate : 0.0.2  : ~/dev/kgems/k_rails_template/lib/k_rails_template/version.rb

寶石文件

# frozen_string_literal: true

source 'https://rubygems.org'

gemspec

group :development, :test do
  gem 'guard-bundler'
  gem 'guard-rspec'
  gem 'guard-rubocop'
  gem 'rake'
  gem 'rake-compiler', require: false
  gem 'rspec', '~> 3.0'
  gem 'rubocop'
  gem 'rubocop-rake', require: false
  gem 'rubocop-rspec', require: false
end

group :test do
  gem 'simplecov', require: false
end

if ENV['KLUE_LOCAL_GEMS']&.to_s&.downcase == 'true'
  group :development, :test do
    puts 'Using Local GEMs'
    gem 'handlebars-helpers'      , path: '../handlebars-helpers'
    gem 'k_builder'               , path: '../k_builder'
    gem 'k_builder-dotnet'        , path: '../k_builder-dotnet'
    gem 'k_builder-webpack5'      , path: '../k_builder-webpack5'
    gem 'k_config'                , path: '../k_config'
    gem 'k_decor'                 , path: '../k_decor'
    gem 'k_director'              , path: '../k_director'
    gem 'k_doc'                   , path: '../k_doc'
    gem 'k_domain'                , path: '../k_domain'
    gem 'k_ext-github'            , path: '../k_ext-github'
    gem 'k_fileset'               , path: '../k_fileset'
    gem 'k_log'                   , path: '../k_log'
    gem 'k_manager'               , path: '../k_manager'
    gem 'k_type'                  , path: '../k_type'
    gem 'k_util'                  , path: '../k_util'
    gem 'peeky'                   , path: '../peeky'
  end
end

CLI 起點./exe/k_rails_template

#!/usr/bin/env ruby
# frozen_string_literal: true

lib_path = File.expand_path('../lib', __dir__)
$LOAD_PATH.unshift(lib_path) unless $LOAD_PATH.include?(lib_path)

require 'k_rails_template'

Signal.trap('INT') do
  warn("\n#{caller.join("\n")}: interrupted")
  exit(1)
end

begin
  KRailsTemplate::CLI.start
rescue KRailsTemplate::CLI::Error => e
  puts "ERROR: #{e.message}"
  exit 1
end

我做了一些調查,似乎我需要使用bundle exec運行命令行工具

./exe/k_rails_template project更改為bundle exec ./exe/k_rails_template project

KUtil::Version          : 0.0.28 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_util-0.0.28/lib/k_util/version.rb
KLog::Version           : 0.0.33 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_log-0.0.33/lib/k_log/version.rb
KType::Version          : 0.0.8  : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_type-0.0.8/lib/k_type/version.rb
KDecor::Version         : 0.0.7  : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_decor-0.0.7/lib/k_decor/version.rb
KDoc::Version           : 0.0.37 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_doc-0.0.37/lib/k_doc/version.rb
KConfig::Version        : 0.0.10 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_config-0.0.10/lib/k_config/version.rb
Peeky::Version          : 0.0.49 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/peeky-0.0.49/lib/peeky/version.rb
KDomain::Version        : 0.0.28 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_domain-0.0.28/lib/k_domain/version.rb
KBuilder::Version       : 0.0.75 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_builder-0.0.75/lib/k_builder/version.rb
KExt::Github::Version   : 0.0.8  : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_ext-github-0.0.8/lib/k_ext/github/version.rb
KDirector::Version      : 0.16.1 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_director-0.16.1/lib/k_director/version.rb
KFileset::Version       : 0.0.6  : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_fileset-0.0.6/lib/k_fileset/version.rb
DrawioDsl::Version      : 0.11.8 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/drawio_dsl-0.11.8/lib/drawio_dsl/version.rb
KManager::Version       : 0.0.33 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/k_manager-0.0.33/lib/k_manager/version.rb
KRailsTemplate::Version : 0.0.2  : ~/dev/kgems/k_rails_template/lib/k_rails_template/version.rb

Using Local GEMs
KUtil::Version          : 0.0.28 : ~/dev/kgems/k_util/lib/k_util/version.rb
KLog::Version           : 0.0.34 : ~/dev/kgems/k_log/lib/k_log/version.rb
KType::Version          : 0.0.10 : ~/dev/kgems/k_type/lib/k_type/version.rb
KDecor::Version         : 0.0.8  : ~/dev/kgems/k_decor/lib/k_decor/version.rb
KDoc::Version           : 0.0.37 : ~/dev/kgems/k_doc/lib/k_doc/version.rb
KConfig::Version        : 0.0.10 : ~/dev/kgems/k_config/lib/k_config/version.rb
Peeky::Version          : 0.0.49 : ~/dev/kgems/peeky/lib/peeky/version.rb
KDomain::Version        : 0.0.28 : ~/dev/kgems/k_domain/lib/k_domain/version.rb
KBuilder::Version       : 0.0.76 : ~/dev/kgems/k_builder/lib/k_builder/version.rb
KExt::Github::Version   : 0.0.8  : ~/dev/kgems/k_ext-github/lib/k_ext/github/version.rb
KDirector::Version      : 0.16.1 : ~/dev/kgems/k_director/lib/k_director/version.rb
KFileset::Version       : 0.0.7  : ~/dev/kgems/k_fileset/lib/k_fileset/version.rb
DrawioDsl::Version      : 0.11.8 : ~/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0/gems/drawio_dsl-0.11.8/lib/drawio_dsl/version.rb
KManager::Version       : 0.0.34 : ~/dev/kgems/k_manager/lib/k_manager/version.rb
KRailsTemplate::Version : 0.0.2  : ~/dev/kgems/k_rails_template/lib/k_rails_template/version.rb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM