From d8a795e3429e4dc4e1c1a9d51841960ceb474a43 Mon Sep 17 00:00:00 2001 From: Mario DS Briggs Date: Wed, 24 Sep 2008 20:13:28 +0530 Subject: [PATCH] Changes to have rails recognize ibm_db, while issued command rails -d ibm_db. The changes include adding ibm_db to the list of databses in the file app_generator.rb. Added a template database.yml file for ibm_db. Added a test case, rails_app_generator_test.rb, to test the changes made. --- railties/configs/databases/ibm_db.yml | 65 ++++++++++++++++++++ .../generators/applications/app/app_generator.rb | 2 +- .../test/generators/rails_app_generator_test.rb | 62 +++++++++++++++++++ 3 files changed, 128 insertions(+), 1 deletions(-) create mode 100644 railties/configs/databases/ibm_db.yml create mode 100644 railties/test/generators/rails_app_generator_test.rb diff --git a/railties/configs/databases/ibm_db.yml b/railties/configs/databases/ibm_db.yml new file mode 100644 index 0000000..2766986 --- /dev/null +++ b/railties/configs/databases/ibm_db.yml @@ -0,0 +1,65 @@ +# Rails Adapter/Ruby Driver for IBM DataServers +# +# Home Page +# http://rubyforge.org/projects/rubyibm/ +# To install ibm_db gem : +# +# Linux platform +# +# source the db2profile file and set the necessary environment variables as below : +# +# . /home/db2inst1/sqllib/db2profile +# export IBM_DB_DIR=/opt/ibm/db2/V9.1 +# export IBM_DB_LIB=/opt/ibm/db2/V9.1/lib32 +# +# Issue the command : gem install ibm_db +# +# Windows platform +# +# Issue the command : gem install ibm_db +# select the option for platform mswin32 +# +# For more details on installation refer http://rubyforge.org/docman/view.php/2361/7682/IBM_DB_GEM.pdf +# +# For more details on the below connection parameters refer +# http://rubyibm.rubyforge.org/docs/adapter/0.9.0/rdoc/classes/ActiveRecord/ConnectionAdapters/IBM_DBAdapter.html + +development: + adapter: ibm_db + username: db2user + password: secret + database: <%= app_name[0,4] %>_dev + #schema: db2user + #host: Socrates + #port: 50000 + #account: tester + #app_user: test11 + #application: rtests + #workstation: plato + + +test: + adapter: ibm_db + username: db2user + password: secret + database: <%= app_name[0,4] %>_tst + #schema: db2user + #host: Socrates + #port: 50000 + #account: tester + #app_user: test11 + #application: rtests + #workstation: plato + +production: + adapter: ibm_db + username: db2user + password: secret + database: <%= app_name[0,4] %>_prd + #schema: db2user + #host: Socrates + #port: 50000 + #account: tester + #app_user: test11 + #application: rtests + #workstation: plato diff --git a/railties/lib/rails_generator/generators/applications/app/app_generator.rb b/railties/lib/rails_generator/generators/applications/app/app_generator.rb index 9849948..acd3dc8 100644 --- a/railties/lib/rails_generator/generators/applications/app/app_generator.rb +++ b/railties/lib/rails_generator/generators/applications/app/app_generator.rb @@ -5,7 +5,7 @@ class AppGenerator < Rails::Generator::Base DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) - DATABASES = %w(mysql oracle postgresql sqlite2 sqlite3 frontbase) + DATABASES = %w(mysql oracle postgresql sqlite2 sqlite3 frontbase ibm_db) DEFAULT_DATABASE = 'sqlite3' default_options :db => (ENV["RAILS_DEFAULT_DATABASE"] || DEFAULT_DATABASE), diff --git a/railties/test/generators/rails_app_generator_test.rb b/railties/test/generators/rails_app_generator_test.rb new file mode 100644 index 0000000..a51de2e --- /dev/null +++ b/railties/test/generators/rails_app_generator_test.rb @@ -0,0 +1,62 @@ +require 'test/unit' +require 'fileutils' + +# Set RAILS_ROOT appropriately fixture generation +tmp_dir = "#{File.dirname(__FILE__)}/../../myapp" + +if defined? RAILS_ROOT + RAILS_ROOT.replace tmp_dir +else + RAILS_ROOT = tmp_dir +end + +FileUtils.mkdir_p RAILS_ROOT + +$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../lib" +require 'initializer' + +# Mocks out the configuration +module Rails + def self.configuration + Rails::Configuration.new + end +end + +require 'rails_generator' +require 'rails_generator/generators/applications/app/app_generator' + +class AppGenerator < Rails::Generator::Base + def create_database_yml + obj = Rails::Generator::Commands::Create.new self + obj.template "configs/databases/ibm_db.yml","config/database.yml",:assigns => {:app_name => @app_name} + end +end + +class AppGenerationTest < Test::Unit::TestCase + include FileUtils + + def setup + mkdir_p "#{RAILS_ROOT}/config" + end + + def test_app_generator_for_ibm_db + @app_name = 'myapp' + + assert File.exist?("#{File.dirname(__FILE__)}/../../configs/databases/ibm_db.yml"),"The file '#{File.dirname(__FILE__)}/../../configs/databases/ibm_db.yml' should exist" + assert_nothing_raised do + app = AppGenerator.new([@app_name,'-d','ibm_db']) + app.create_database_yml + end + data = File.read("#{RAILS_ROOT}/config/database.yml").freeze + + assert_match %r{database: #{@app_name[0,4]}_dev},data + assert_match %r{database: #{@app_name[0,4]}_tst},data + assert_match %r{database: #{@app_name[0,4]}_prd},data + end + + def teardown + rm_rf "#{RAILS_ROOT}" + end + +end + -- 1.5.6.1