【问题标题】:gem dependencies not installed未安装 gem 依赖项
【发布时间】:2013-07-25 22:38:37
【问题描述】:

我确信这很明显,但我对 ruby​​ 还是很陌生。我想使用 rake / albacore 来自动化一些任务。我想使用捆绑器将其打包以在我的构建服务器上使用。现在我想做一个使用 mixlib-shellout 模拟系统帐户的愚蠢任务。为此,我有以下 Gemfile:

source 'http://rubygems.org'
gem 'mixlib-shellout'
gem 'rake'

以及以下 rake 文件:

require 'rubygems'
require 'bundler/setup'

require 'mixlib/shellout'

task :default do
    whomai = Mixlib::ShellOut.new("whoami.exe", :user => "username", :domain => "DOMAIN", :password => "password")
    whoami.run_command
end

我跑

bundle install

我只看到 rake 正在安装... Gemfile.lock dep 树中没有其他依赖项...这正常吗?

PS C:\Users\Ben\src\ruby_test> bundle install
Fetching gem metadata from http://rubygems.org/...........
Fetching gem metadata from http://rubygems.org/..
Resolving dependencies...
Installing rake (10.1.0)
Using bundler (1.3.5)
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

然后我运行

bundle exec rake

我得到回报

rake aborted!
cannot load such file -- mixlib/shellout
C:/Users/Ben/src/ruby_test/rakefile.rb:4:in `require'
C:/Users/Ben/src/ruby_test/rakefile.rb:4:in `<top (required)>'
(See full trace by running task with --trace)

我正在使用 ruby​​ 2.0 和 bundler 1.3.5

感谢您的任何帮助。

【问题讨论】:

    标签: ruby dependencies rake bundler


    【解决方案1】:

    我建议使用 *.gemspec 文件设置您的 gem。为此,您的 Gemfile 变得非常简单:

    source 'https://rubygems.org'
    gemspec
    

    然后编写一个新文件“GEM_NAME.gemspec”。这是一个例子:

    Gem::Specification.new do |spec|
      spec.name          = GAME_NAME
      spec.version       = VERSION
      spec.authors       = AUTHORS
      spec.email         = EMAILS
      spec.summary       = SUMMARY
      spec.description   = DESCRIPTION
      spec.homepage      = HOMEPAGE
    
      spec.files         = Dir['rakefile.rb', '*.gemspec']
      spec.files         += Dir['bin/**', 'lib/**/*.rb']
    
      spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
      spec.require_paths = ["lib"]
    
      spec.add_runtime_dependency "ruby-terminfo", "~> 0.1"
    
      spec.add_development_dependency "bundler", "~> 1.7"
      spec.add_development_dependency "rake", "~> 10.0"
    end
    

    您需要为每个依赖的 gem 添加一个单独的spec.add_runtime_dependency。上面的示例包括“ruby-terminfo”gem。

    此外,您需要设置 spec.files 字段以反映 gem 的文件和文件夹结构。

    更多详情请见RubyGem Guide

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 2016-03-14
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多