[PATCH conductor] update conductor to ruby 1.9 (rev 2)

Mo Morsi mmorsi at redhat.com
Thu Feb 23 01:29:46 UTC 2012


  - conditionalized so that it still works against ruby 1.8
  - spec file changes
  - gemfile changes
  - remove fastercsv dependency
  - drop explicit rubygem(rspec) dep (rspec-rails will pull in rspec2)
---
 aeolus-conductor.spec.in         |   23 ++++++++++++++++++-----
 src/Gemfile                      |    4 +++-
 src/app/models/instance.rb       |    3 ++-
 src/config/application.rb        |    2 +-
 src/config/locales/en.yml        |    6 +++---
 src/spec/models/instance_spec.rb |    6 +++++-
 6 files changed, 32 insertions(+), 12 deletions(-)

diff --git a/aeolus-conductor.spec.in b/aeolus-conductor.spec.in
index 7175473..b6a2d60 100644
--- a/aeolus-conductor.spec.in
+++ b/aeolus-conductor.spec.in
@@ -1,6 +1,14 @@
 %global app_root %{_datadir}/%{name}
 %global doc_root %{_datadir}/%{name}-doc
 
+%if 0%{?fedora} > 16
+%global rubyver 1.9.3
+%global rubyabi 1.9.1
+%else
+%global rubyver 1.8.1
+%global rubyabi 1.8
+%endif
+
 Name:     aeolus-conductor
 Version:  @VERSION@
 Release:  0%{?dist}
@@ -17,8 +25,8 @@ URL:      http://aeolusproject.org
 # cp aeolus-conductor-0.3.0.tar.gz ~/rpmbuild/SOURCES
 Source0:    aeolus-conductor-%{version}.tar.gz
 
-Requires: ruby >= 1.8.1
-Requires: ruby(abi) = 1.8
++Requires: ruby >= %{rubyver}
++Requires: ruby(abi) = %{rubyabi}
 Requires: rubygem(rails) >= 3.0.7
 Requires: rubygem(haml) >= 3.1
 Requires: rubygem(nokogiri) >= 1.4.0
@@ -31,16 +39,21 @@ Requires: rubygem(json)
 Requires: rubygem(rack-restful_submit)
 Requires: rubygem(uuidtools)
 Requires: rubygem(sqlite3)
-Requires: rubygem(fastercsv)
 Requires: rubygem(rails_warden)
 Requires: rubygem(aeolus-image) >= 0.1.0-4
 Requires: rubygem(pg)
-Requires: rubygem(ruby-net-ldap)
 Requires: rubygem(oauth)
 Requires: rubygem(rake)
 Requires: postgresql
 Requires: postgresql-server
 
+%if 0%{?fedora} > 16
+Requires: rubygem(net-ldap)
+%else
+Requires: rubygem(fastercsv)
+Requires: rubygem(ruby-net-ldap)
+%endif
+
 # to ensure the service is actually started
 # and is accessible in the init script
 Requires: curl
@@ -79,7 +92,6 @@ Summary: Aeolus Conductor development and testing files
 Group:   Applications/Internet
 Requires: %{name} = %{version}-%{release}
 Requires: rubygem(cucumber)
-Requires: rubygem(rspec)
 Requires: rubygem(timecop)
 Requires: rubygem(cucumber-rails)
 Requires: rubygem(rspec-rails) >= 2.6.1
@@ -90,6 +102,7 @@ Requires: rubygem(vcr)
 Requires: rubygem(factory_girl_rails)
 Requires: rubygem(webmock)
 Requires: rubygem(launchy)
+Requires: rubygem(minitest)
 
 %description devel
 Tests and other development tools for the Aeolus Conductor.
diff --git a/src/Gemfile b/src/Gemfile
index 2d8e8df..7f26313 100644
--- a/src/Gemfile
+++ b/src/Gemfile
@@ -17,11 +17,13 @@ gem 'pg'
 gem 'thin'
 gem 'json'
 gem 'railties'
-gem 'fastercsv'
 gem 'rails_warden'
 gem 'ruby-net-ldap'
 gem 'aeolus-image'
 gem 'oauth'
+platforms :ruby_18 do
+  gem 'fastercsv'
+end
 group :development, :test do
   gem 'rspec-rails'
   gem 'rspec-core'
diff --git a/src/app/models/instance.rb b/src/app/models/instance.rb
index e6ce567..b2b8f75 100644
--- a/src/app/models/instance.rb
+++ b/src/app/models/instance.rb
@@ -398,7 +398,8 @@ class Instance < ActiveRecord::Base
   end
 
   def self.csv_export(instances)
-    csv_string = FasterCSV.generate(:col_sep => ";", :row_sep => "\r\n") do |csv|
+    csvm = Object.const_defined?(:FasterCSV) ? FasterCSV : CSV
+    csv_string = csvm.generate(:col_sep => ";", :row_sep => "\r\n") do |csv|
       event_attributes = Event.new.attributes.keys.reject {|key| key if key == "created_at" || key == "updated_at"}
 
       csv << event_attributes.map {|event| event.capitalize }
diff --git a/src/config/application.rb b/src/config/application.rb
index 9c0949f..84185c4 100644
--- a/src/config/application.rb
+++ b/src/config/application.rb
@@ -39,7 +39,7 @@ else
   require 'pg'
   require 'thin'
   require 'json'
-  require 'fastercsv'
+  require 'fastercsv' if RUBY_VERSION =~ /1\.8\..*/  # no longer needed in ruby 1.9+
   require 'nokogiri'
   #require 'railties'
 
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
index b7e3057..f0a350e 100644
--- a/src/config/locales/en.yml
+++ b/src/config/locales/en.yml
@@ -210,7 +210,7 @@ en:
       arch: ARCH
       deployable_xml: Deployable XML
     show:
-      name: %{name} Deployment
+      name: "%{name} Deployment"
     new:
       launch: Launch this deployment
       deployable_definition: Deployable definition
@@ -519,8 +519,8 @@ en:
     new:
       new_hwp: New Hardware Profile
     show:
-      frontend_hwp: %{name} (Front End)
-      backend_hwp: %{name} (Provider)
+      frontend_hwp: "%{name} (Front End)"
+      backend_hwp: "%{name} (Provider)"
       matching_hwp: Matching Provider Hardware Profiles
     flash:
       notice:
diff --git a/src/spec/models/instance_spec.rb b/src/spec/models/instance_spec.rb
index 8af85b1..be4bfee 100644
--- a/src/spec/models/instance_spec.rb
+++ b/src/spec/models/instance_spec.rb
@@ -16,6 +16,8 @@
 
 require 'spec_helper'
 
+require 'csv'
+
 describe Instance do
   before(:each) do
     @quota = FactoryGirl.create :quota
@@ -251,7 +253,9 @@ describe Instance do
   end
 
   it "should return csv header string for export" do
-    reader = CSV::Reader.create(Instance.csv_export([FactoryGirl.create(:instance)]))
+    reader = CSV.const_defined?(:Reader) ?
+               CSV::Reader.create(Instance.csv_export([FactoryGirl.create(:instance)])) :
+               CSV.parse(Instance.csv_export([FactoryGirl.create(:instance)]))
     header = reader.shift
       ['Status_code','Event_time','Summary','Source_type','Description','Source_id'].each do |attribute|
         header[0].split(';').include?(attribute).should be_true
-- 
1.7.6.5




More information about the aeolus-devel mailing list