1

我是红宝石的新手,并试图在厨师中弄脏我的手。我在 postgresql 社区食谱上写了一本包装食谱,并希望使用测试厨房对其进行测试。以下是我编写的 spec.rb 文件:

require 'serverspec'
require 'pg'

include Serverspec::Helper::Exec
include Serverspec::Helper::DetectOS


RSpec.configure do |c|
  c.before :all do
    c.path = '/sbin:/usr/sbin'
    c.os = backend(Serverspec::Commands::Base).check_os
  end
end

describe "Postgresql server" do
    it "should connect to database" do
        conn = PG::Connection.open(:dbname => "db",:user => "user1",:password => "password")
        conn.status == "CONNECTION_OK"
    end
end

通过这个测试,我希望检查用户和数据库是否已正确创建。但是,此测试无法解决“pg”的依赖性。我在 serverspec 中哪里提到了这种依赖关系?我曾经kitchen verify [node name]运行过测试。

4

1 回答 1

2

在您的文件中需要它之前创建安装 gem 所需的 Ruby 代码spec_helper.rb(或者如果它更有意义,则在规范文件的顶部):

begin
  Gem::Specification.find_by_name('pg')
rescue Gem::LoadError
  require 'rubygems/dependency_installer'
  Gem::DependencyInstaller.new(Gem::DependencyInstaller::DEFAULT_OPTIONS).install('pg')
end
require 'pg'
于 2014-02-28T16:35:04.280 回答