diff --git a/packages/gems.sls b/packages/gems.sls index f578833..506718d 100644 --- a/packages/gems.sls +++ b/packages/gems.sls @@ -27,9 +27,25 @@ gem_req_pkgs: ### GEMS to install # (requires the ruby/rubygem deb/rpm installed, either by the system or listed in # the required packages + # Standarize gems to format { gem: version } + {% set gem = namespace(name = '', version = '') %} + {%- for gm in wanted_gems %} -{{ gm }}: + {%- if gm is mapping %} + {%- for k,v in gm.items() %} + {%- set gem.name = k %} + {%- set gem.version = v %} + {%- endfor %} + {%- else %} + {%- set gem.name = gm %} + {%- set gem.version = 'version_undefined' %} + {%- endif %} +{{ gem.name }}-{{ gem.version }}: gem.installed: + - name: {{ gem.name }} + {%- if gem.version != 'version_undefined' %} + - version: {{ gem.version }} + {%- endif %} - require: - pkg: gem_req_pkgs {%- if req_states %} diff --git a/pillar.example b/pillar.example index 3a00266..b5146c8 100644 --- a/pillar.example +++ b/pillar.example @@ -57,6 +57,9 @@ packages: wanted: - progressbar - minitest + # You can also specify a desired gem version + - some_gem: 1.2.3 + - other: 2.3.4 unwanted: - diff-lcs - kitchen-vagrant diff --git a/test/integration/default/controls/gems_spec.rb b/test/integration/default/controls/gems_spec.rb index 5424e85..821acc8 100644 --- a/test/integration/default/controls/gems_spec.rb +++ b/test/integration/default/controls/gems_spec.rb @@ -20,6 +20,22 @@ end end +### SPECIFIC GEMS VERSIONS +control "Specific gems' versions" do + title 'should be installed' + + specific_gems = { + 'regexp_parser' => '1.7.0', + 'strings' => '0.1.8' + } + specific_gems.each do |p, _v| + describe gem(p) do + it { should be_installed } + its('versions') { should include(/v/) } + end + end +end + ### UNWANTED control 'Unwanted gems' do title 'should be uninstalled' diff --git a/test/salt/pillar/debian.sls b/test/salt/pillar/debian.sls index aabd024..d5155f2 100644 --- a/test/salt/pillar/debian.sls +++ b/test/salt/pillar/debian.sls @@ -41,7 +41,6 @@ packages: # should also add the python pip package you want. Otherwise, the formula # will take care of getting it if needed. - libpython2.7-dev - - python-pip wanted: - dxpy - attrs @@ -59,6 +58,8 @@ packages: wanted: - progressbar - minitest + - strings: 0.1.8 + - regexp_parser: 1.7.0 unwanted: - diff-lcs - kitchen-vagrant