2013-07-25 64 views
4

我确定这真的很明显,但我对ruby比较陌生。我想使用rake/albacore来自动完成一些任务。我想打包使用捆绑器在我的构建服务器上使用。现在我想做一个愚蠢的任务,使用mixlib-shellout模拟sys帐户。为此,我有以下的Gemfile:没有安装gem dependencies

source 'http://rubygems.org' 
gem 'mixlib-shellout' 
gem '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 

,我只看到正在安装耙......没有的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) 

我使用红宝石2.0和1.3.5打捆

感激地收到任何帮助搞定。

回答

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 

您需要添加一个单独的spec.add_runtime_dependency每个因宝石。上面的例子包括“ruby-terminfo”宝石。

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

查看RubyGem Guide了解更多详情。