aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2006-02-25 18:41:13 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2006-02-25 18:41:13 +0000
commit290983be3114cd48f63265466abb57b15cbfb8f5 (patch)
tree7fb65ba475fab8bb2cd1200c6fa59f25eabb2357
parent09993a60737aa642a47bd5047dd53f85a5c0120d (diff)
downloadrails-290983be3114cd48f63265466abb57b15cbfb8f5.tar.gz
rails-290983be3114cd48f63265466abb57b15cbfb8f5.tar.bz2
rails-290983be3114cd48f63265466abb57b15cbfb8f5.zip
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
-rw-r--r--railties/CHANGELOG2
-rw-r--r--railties/configs/database.yml100
-rw-r--r--railties/configs/databases/mysql.yml47
-rw-r--r--railties/configs/databases/postgresql.yml44
-rw-r--r--railties/configs/databases/sqlite2.yml16
-rw-r--r--railties/configs/databases/sqlite3.yml16
-rw-r--r--railties/lib/rails_generator/generators/applications/app/app_generator.rb34
7 files changed, 143 insertions, 116 deletions
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