From 290983be3114cd48f63265466abb57b15cbfb8f5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 25 Feb 2006 18:41:13 +0000 Subject: Added -d/--database option to the rails command, so you can do "rails --database=sqlite2 myapp" to start a new application preconfigured to use SQLite2 as the database. Removed the configuration examples from SQLite and PostgreSQL from the default MySQL configuration [DHH] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3642 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- railties/CHANGELOG | 2 + railties/configs/database.yml | 100 --------------------- railties/configs/databases/mysql.yml | 47 ++++++++++ railties/configs/databases/postgresql.yml | 44 +++++++++ railties/configs/databases/sqlite2.yml | 16 ++++ railties/configs/databases/sqlite3.yml | 16 ++++ .../generators/applications/app/app_generator.rb | 34 +++---- 7 files changed, 143 insertions(+), 116 deletions(-) delete mode 100644 railties/configs/database.yml create mode 100644 railties/configs/databases/mysql.yml create mode 100644 railties/configs/databases/postgresql.yml create mode 100644 railties/configs/databases/sqlite2.yml create mode 100644 railties/configs/databases/sqlite3.yml diff --git a/railties/CHANGELOG b/railties/CHANGELOG index bb4b1d127d..5380a90935 100644 --- a/railties/CHANGELOG +++ b/railties/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Added -d/--database option to the rails command, so you can do "rails --database=sqlite2 myapp" to start a new application preconfigured to use SQLite2 as the database. Removed the configuration examples from SQLite and PostgreSQL from the default MySQL configuration [DHH] + * Allow script/server -c /path/to/lighttpd.conf [Jeremy Kemper] * Remove hardcoded path to reaper script in script/server [Jeremy Kemper] diff --git a/railties/configs/database.yml b/railties/configs/database.yml deleted file mode 100644 index abace3365d..0000000000 --- a/railties/configs/database.yml +++ /dev/null @@ -1,100 +0,0 @@ -# MySQL (default setup). Versions 4.1 and 5.0 are recommended. -# -# Install the MySQL driver: -# gem install mysql -# On MacOS X: -# gem install mysql -- --include=/usr/local/lib -# On Windows: -# There is no gem for Windows. Install mysql.so from RubyForApache. -# http://rubyforge.org/projects/rubyforapache -# -# And be sure to use new-style password hashing: -# http://dev.mysql.com/doc/refman/5.0/en/old-client.html -development: - adapter: mysql - database: <%= app_name %>_development - username: root - password: -<% if socket -%> - socket: <%= socket %> -<% else -%> - host: localhost -<% end -%> - -# Warning: The database defined as 'test' will be erased and -# re-generated from your development database when you run 'rake'. -# Do not set this db to the same as development or production. -test: - adapter: mysql - database: <%= app_name %>_test - username: root - password: -<% if socket -%> - socket: <%= socket %> -<% else -%> - host: localhost -<% end -%> - -production: - adapter: mysql - database: <%= app_name %>_production - username: root - password: -<% if socket -%> - socket: <%= socket %> -<% else -%> - host: localhost -<% end -%> - - -### Example database connections. You can safely delete these. ### - -# PostgreSQL versions 7.4 - 8.1 -# -# Get the C bindings: -# gem install postgres -# or use the pure-Ruby bindings on Windows: -# gem install postgres-pr -postgresql_example: - adapter: postgresql - database: <%= app_name %>_development - username: <%= app_name %> - password: - - # Connect on a TCP socket. Omitted by default since the client uses a - # domain socket that doesn't need configuration. Windows does not have - # domain sockets, so uncomment these lines. - #host: localhost - #port: 5432 - - # Schema search path. The server defaults to $user,public - #schema_search_path: myapp,sharedapp,public - - # Character set encoding. The server defaults to sql_ascii. - #encoding: UTF8 - - # Minimum log levels, in increasing order: - # debug5, debug4, debug3, debug2, debug1, - # info, notice, warning, error, log, fatal, or panic - # The server defaults to notice. - #min_messages: warning - - -# SQLite version 2.x -# gem install sqlite-ruby -sqlite_example: - adapter: sqlite - database: db/development.sqlite2 - - -# SQLite version 3.x -# gem install sqlite3-ruby -sqlite3_example: - adapter: sqlite3 - database: db/development.sqlite3 - - -# In-memory SQLite 3 database. Useful for tests. -sqlite3_in_memory_example: - adapter: sqlite3 - database: ":memory:" diff --git a/railties/configs/databases/mysql.yml b/railties/configs/databases/mysql.yml new file mode 100644 index 0000000000..13a54b3cd7 --- /dev/null +++ b/railties/configs/databases/mysql.yml @@ -0,0 +1,47 @@ +# MySQL (default setup). Versions 4.1 and 5.0 are recommended. +# +# Install the MySQL driver: +# gem install mysql +# On MacOS X: +# gem install mysql -- --include=/usr/local/lib +# On Windows: +# There is no gem for Windows. Install mysql.so from RubyForApache. +# http://rubyforge.org/projects/rubyforapache +# +# And be sure to use new-style password hashing: +# http://dev.mysql.com/doc/refman/5.0/en/old-client.html +development: + adapter: mysql + database: <%= app_name %>_development + username: root + password: +<% if socket -%> + socket: <%= socket %> +<% else -%> + host: localhost +<% end -%> + +# Warning: The database defined as 'test' will be erased and +# re-generated from your development database when you run 'rake'. +# Do not set this db to the same as development or production. +test: + adapter: mysql + database: <%= app_name %>_test + username: root + password: +<% if socket -%> + socket: <%= socket %> +<% else -%> + host: localhost +<% end -%> + +production: + adapter: mysql + database: <%= app_name %>_production + username: root + password: +<% if socket -%> + socket: <%= socket %> +<% else -%> + host: localhost +<% end -%> \ No newline at end of file diff --git a/railties/configs/databases/postgresql.yml b/railties/configs/databases/postgresql.yml new file mode 100644 index 0000000000..3c146c13a1 --- /dev/null +++ b/railties/configs/databases/postgresql.yml @@ -0,0 +1,44 @@ +# PostgreSQL versions 7.4 - 8.1 +# +# Get the C bindings: +# gem install postgres +# or use the pure-Ruby bindings on Windows: +# gem install postgres-pr +development: + adapter: postgresql + database: <%= app_name %>_development + username: <%= app_name %> + password: + + # Connect on a TCP socket. Omitted by default since the client uses a + # domain socket that doesn't need configuration. Windows does not have + # domain sockets, so uncomment these lines. + #host: localhost + #port: 5432 + + # Schema search path. The server defaults to $user,public + #schema_search_path: myapp,sharedapp,public + + # Character set encoding. The server defaults to sql_ascii. + #encoding: UTF8 + + # Minimum log levels, in increasing order: + # debug5, debug4, debug3, debug2, debug1, + # info, notice, warning, error, log, fatal, or panic + # The server defaults to notice. + #min_messages: warning + +# Warning: The database defined as 'test' will be erased and +# re-generated from your development database when you run 'rake'. +# Do not set this db to the same as development or production. +test: + adapter: postgresql + database: <%= app_name %>_test + username: <%= app_name %> + password: + +production: + adapter: postgresql + database: <%= app_name %>_production + username: <%= app_name %> + password: diff --git a/railties/configs/databases/sqlite2.yml b/railties/configs/databases/sqlite2.yml new file mode 100644 index 0000000000..92550d4647 --- /dev/null +++ b/railties/configs/databases/sqlite2.yml @@ -0,0 +1,16 @@ +# SQLite version 2.x +# gem install sqlite-ruby +development: + adapter: sqlite + database: db/development.sqlite2 + +# Warning: The database defined as 'test' will be erased and +# re-generated from your development database when you run 'rake'. +# Do not set this db to the same as development or production. +test: + adapter: sqlite + database: ":memory:" + +production: + adapter: sqlite + database: db/production.sqlite2 diff --git a/railties/configs/databases/sqlite3.yml b/railties/configs/databases/sqlite3.yml new file mode 100644 index 0000000000..bd06c0876e --- /dev/null +++ b/railties/configs/databases/sqlite3.yml @@ -0,0 +1,16 @@ +# SQLite version 3.x +# gem install sqlite3-ruby +development: + adapter: sqlite3 + database: db/development.sqlite3 + +# Warning: The database defined as 'test' will be erased and +# re-generated from your development database when you run 'rake'. +# Do not set this db to the same as development or production. +test: + adapter: sqlite3 + database: ":memory:" + +production: + adapter: sqlite3 + database: db/production.sqlite3 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 0818167fc4..2456f02451 100644 --- a/railties/lib/rails_generator/generators/applications/app/app_generator.rb +++ b/railties/lib/rails_generator/generators/applications/app/app_generator.rb @@ -4,16 +4,13 @@ class AppGenerator < Rails::Generator::Base DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) - default_options :gem => true, :shebang => DEFAULT_SHEBANG - mandatory_options :source => "#{File.dirname(__FILE__)}/../../../../.." + default_options :db => "mysql", :shebang => DEFAULT_SHEBANG + mandatory_options :source => "#{File.dirname(__FILE__)}/../../../../.." def initialize(runtime_args, runtime_options = {}) super usage if args.empty? @destination_root = args.shift - unless RUBY_PLATFORM =~ /mswin32/ - @socket = MYSQL_SOCKET_LOCATIONS.find { |f| File.exists?(f) } - end end def manifest @@ -35,9 +32,9 @@ class AppGenerator < Rails::Generator::Base m.template "helpers/test_helper.rb", "test/test_helper.rb" # database.yml and .htaccess - m.template "configs/database.yml", "config/database.yml", :assigns => { + m.template "configs/databases/#{options[:db]}.yml", "config/database.yml", :assigns => { :app_name => File.basename(File.expand_path(@destination_root)), - :socket => @socket + :socket => options[:db] == "mysql" ? mysql_socket_location : nil } m.template "configs/routes.rb", "config/routes.rb" m.template "configs/apache.conf", "public/.htaccess" @@ -64,15 +61,15 @@ class AppGenerator < Rails::Generator::Base m.template "html/#{file}.html", "public/#{file}.html" end - m.template "html/favicon.ico", "public/favicon.ico" - m.template "html/robots.txt", "public/robots.txt" + m.template "html/favicon.ico", "public/favicon.ico" + m.template "html/robots.txt", "public/robots.txt" m.file "html/images/rails.png", "public/images/rails.png" # Javascripts - m.file "html/javascripts/prototype.js", "public/javascripts/prototype.js" - m.file "html/javascripts/effects.js", "public/javascripts/effects.js" - m.file "html/javascripts/dragdrop.js", "public/javascripts/dragdrop.js" - m.file "html/javascripts/controls.js", "public/javascripts/controls.js" + m.file "html/javascripts/prototype.js", "public/javascripts/prototype.js" + m.file "html/javascripts/effects.js", "public/javascripts/effects.js" + m.file "html/javascripts/dragdrop.js", "public/javascripts/dragdrop.js" + m.file "html/javascripts/controls.js", "public/javascripts/controls.js" # Docs m.file "doc/README_FOR_APP", "doc/README_FOR_APP" @@ -94,9 +91,14 @@ class AppGenerator < Rails::Generator::Base opt.separator 'Options:' opt.on("--ruby [#{DEFAULT_SHEBANG}]", "Path to the Ruby binary of your choice.") { |options[:shebang]| } - opt.on("--without-gems", - "Don't use the Rails gems for your app.", - "WARNING: see note below.") { |options[:gem]| } + + opt.on("-d", "--database=name", String, + "Preconfigure for selected database (options: mysql/postgresql/sqlite2/sqlite3).", + "Default: mysql") { |options[:db]| } + end + + def mysql_socket_location + RUBY_PLATFORM =~ /mswin32/ ? MYSQL_SOCKET_LOCATIONS.find { |f| File.exists?(f) } : nil end -- cgit v1.2.3