aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-03-27 13:33:54 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-03-27 13:33:54 +0000
commit065cb2a08d6b0fe7683f98b69af1cee2ce3e69cd (patch)
tree905ce9d5a107214828eb437506110a1edd06bc22 /railties
parent5cd38ca25d1742f2f1a4fa40145fe45c6415e17c (diff)
downloadrails-065cb2a08d6b0fe7683f98b69af1cee2ce3e69cd.tar.gz
rails-065cb2a08d6b0fe7683f98b69af1cee2ce3e69cd.tar.bz2
rails-065cb2a08d6b0fe7683f98b69af1cee2ce3e69cd.zip
Made ready for better release automation
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1021 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'railties')
-rw-r--r--railties/README49
-rw-r--r--railties/Rakefile125
-rwxr-xr-xrailties/fresh_rakefile4
3 files changed, 151 insertions, 27 deletions
diff --git a/railties/README b/railties/README
index ca5f3737fd..4f8bee3c0e 100644
--- a/railties/README
+++ b/railties/README
@@ -67,30 +67,30 @@ goes through FCGI (or mod_ruby) that requires restart to show changes.
== Example for lighttpd conf (with FastCGI)
-server.port = 8080
-server.bind = "127.0.0.1"
-# server.event-handler = "freebsd-kqueue" # needed on OS X
-
-server.modules = ( "mod_rewrite", "mod_fastcgi" )
-
-url.rewrite = ( "^/$" => "index.html", "^([^.]+)$" => "$1.html" )
-server.error-handler-404 = "/dispatch.fcgi"
-
-server.document-root = "/path/application/public"
-server.errorlog = "/path/application/log/server.log"
-
-fastcgi.server = ( ".fcgi" =>
- ( "localhost" =>
- (
- "min-procs" => 1,
- "max-procs" => 5,
- "socket" => "/tmp/application.fcgi.socket",
- "bin-path" => "/path/application/public/dispatch.fcgi",
- "bin-environment" => ( "RAILS_ENV" => "development" )
- )
+ server.port = 8080
+ server.bind = "127.0.0.1"
+ # server.event-handler = "freebsd-kqueue" # needed on OS X
+
+ server.modules = ( "mod_rewrite", "mod_fastcgi" )
+
+ url.rewrite = ( "^/$" => "index.html", "^([^.]+)$" => "$1.html" )
+ server.error-handler-404 = "/dispatch.fcgi"
+
+ server.document-root = "/path/application/public"
+ server.errorlog = "/path/application/log/server.log"
+
+ fastcgi.server = ( ".fcgi" =>
+ ( "localhost" =>
+ (
+ "min-procs" => 1,
+ "max-procs" => 5,
+ "socket" => "/tmp/application.fcgi.socket",
+ "bin-path" => "/path/application/public/dispatch.fcgi",
+ "bin-environment" => ( "RAILS_ENV" => "development" )
+ )
+ )
)
-)
-
+
== Debugging Rails
@@ -139,7 +139,8 @@ Finally, when you're ready to resume execution, you press CTRL-D
You can interact with the domain model by starting the console through script/console.
Here you'll have all parts of the application configured, just like it is when the
application is running. You can inspect domain models, change values, and save to the
-database. Start the script without arguments to see the options.
+database. Start the script without arguments will launch it in the development environment.
+Passing an argument will specify a different environment, like <tt>console production</tt>.
== Description of contents
diff --git a/railties/Rakefile b/railties/Rakefile
index 5e7c94f1a0..c9d435d5c4 100644
--- a/railties/Rakefile
+++ b/railties/Rakefile
@@ -13,6 +13,11 @@ PKG_VERSION = '0.11.0' + PKG_BUILD
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
PKG_DESTINATION = ENV["RAILS_PKG_DESTINATION"] || "../#{PKG_NAME}"
+RELEASE_NAME = "REL #{PKG_VERSION}"
+
+RUBY_FORGE_PROJECT = "rails"
+RUBY_FORGE_USER = "webster132"
+
BASE_DIRS = %w( app config/environments components db doc log lib public script test vendor )
APP_DIRS = %w( apis models controllers helpers views views/layouts )
@@ -233,7 +238,7 @@ spec = Gem::Specification.new do |s|
on top of either MySQL, PostgreSQL, or SQLite with eRuby-based templates.
EOF
- s.add_dependency('rake', '>= 0.4.15')
+ s.add_dependency('rake', '>= 0.5.0')
s.add_dependency('activesupport', '= 1.0.2' + PKG_BUILD)
s.add_dependency('activerecord', '= 1.9.0' + PKG_BUILD)
s.add_dependency('actionpack', '= 1.6.0' + PKG_BUILD)
@@ -259,9 +264,125 @@ end
Rake::GemPackageTask.new(spec) do |pkg|
end
-# Publish beta gem
+
+# Publishing -------------------------------------------------------
desc "Publish the API documentation"
task :pgem => [:gem] do
Rake::SshFilePublisher.new("davidhh@comox.textdrive.com", "public_html/gems/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload
`ssh davidhh@comox.textdrive.com './gemupdate.sh'`
+end
+
+desc "Publish the release files to RubyForge."
+task :release => [:package] do
+ files = ["gem"].map { |ext| "pkg/#{PKG_FILE_NAME}.#{ext}" }
+
+ if RUBY_FORGE_PROJECT then
+ require 'net/http'
+ require 'open-uri'
+
+ project_uri = "http://rubyforge.org/projects/#{RUBY_FORGE_PROJECT}/"
+ project_data = open(project_uri) { |data| data.read }
+ group_id = project_data[/[?&]group_id=(\d+)/, 1]
+ raise "Couldn't get group id" unless group_id
+
+ # This echos password to shell which is a bit sucky
+ if ENV["RUBY_FORGE_PASSWORD"]
+ password = ENV["RUBY_FORGE_PASSWORD"]
+ else
+ print "#{RUBY_FORGE_USER}@rubyforge.org's password: "
+ password = STDIN.gets.chomp
+ end
+
+ login_response = Net::HTTP.start("rubyforge.org", 80) do |http|
+ data = [
+ "login=1",
+ "form_loginname=#{RUBY_FORGE_USER}",
+ "form_pw=#{password}"
+ ].join("&")
+ http.post("/account/login.php", data)
+ end
+
+ cookie = login_response["set-cookie"]
+ raise "Login failed" unless cookie
+ headers = { "Cookie" => cookie }
+
+ release_uri = "http://rubyforge.org/frs/admin/?group_id=#{group_id}"
+ release_data = open(release_uri, headers) { |data| data.read }
+ package_id = release_data[/[?&]package_id=(\d+)/, 1]
+ raise "Couldn't get package id" unless package_id
+
+ first_file = true
+ release_id = ""
+
+ files.each do |filename|
+ basename = File.basename(filename)
+ file_ext = File.extname(filename)
+ file_data = File.open(filename, "rb") { |file| file.read }
+
+ puts "Releasing #{basename}..."
+
+ release_response = Net::HTTP.start("rubyforge.org", 80) do |http|
+ release_date = Time.now.strftime("%Y-%m-%d %H:%M")
+ type_map = {
+ ".zip" => "3000",
+ ".tgz" => "3110",
+ ".gz" => "3110",
+ ".gem" => "1400"
+ }; type_map.default = "9999"
+ type = type_map[file_ext]
+ boundary = "rubyqMY6QN9bp6e4kS21H4y0zxcvoor"
+
+ query_hash = if first_file then
+ {
+ "group_id" => group_id,
+ "package_id" => package_id,
+ "release_name" => RELEASE_NAME,
+ "release_date" => release_date,
+ "type_id" => type,
+ "processor_id" => "8000", # Any
+ "release_notes" => "",
+ "release_changes" => "",
+ "preformatted" => "1",
+ "submit" => "1"
+ }
+ else
+ {
+ "group_id" => group_id,
+ "release_id" => release_id,
+ "package_id" => package_id,
+ "step2" => "1",
+ "type_id" => type,
+ "processor_id" => "8000", # Any
+ "submit" => "Add This File"
+ }
+ end
+
+ query = "?" + query_hash.map do |(name, value)|
+ [name, URI.encode(value)].join("=")
+ end.join("&")
+
+ data = [
+ "--" + boundary,
+ "Content-Disposition: form-data; name=\"userfile\"; filename=\"#{basename}\"",
+ "Content-Type: application/octet-stream",
+ "Content-Transfer-Encoding: binary",
+ "", file_data, ""
+ ].join("\x0D\x0A")
+
+ release_headers = headers.merge(
+ "Content-Type" => "multipart/form-data; boundary=#{boundary}"
+ )
+
+ target = first_file ? "/frs/admin/qrs.php" : "/frs/admin/editrelease.php"
+ http.post(target + query, data, release_headers)
+ end
+
+ if first_file then
+ release_id = release_response.body[/release_id=(\d+)/, 1]
+ raise("Couldn't get release id") unless release_id
+ end
+
+ first_file = false
+ end
+ end
end \ No newline at end of file
diff --git a/railties/fresh_rakefile b/railties/fresh_rakefile
index fb9971315f..cdeb0788e1 100755
--- a/railties/fresh_rakefile
+++ b/railties/fresh_rakefile
@@ -71,6 +71,7 @@ Rake::RDocTask.new("appdoc") { |rdoc|
desc "Generate documentation for the Rails framework"
Rake::RDocTask.new("apidoc") { |rdoc|
rdoc.rdoc_dir = 'doc/api'
+ rdoc.template = 'jamis.rb' if ENV['template'] == 'jamis'
rdoc.title = "Rails Framework Documentation"
rdoc.options << '--line-numbers --inline-source'
rdoc.rdoc_files.include('README')
@@ -89,7 +90,7 @@ Rake::RDocTask.new("apidoc") { |rdoc|
rdoc.rdoc_files.include('vendor/rails/actionmailer/CHANGELOG')
rdoc.rdoc_files.include('vendor/rails/actionmailer/lib/action_mailer/base.rb')
rdoc.rdoc_files.include('vendor/rails/actionwebservice/README')
- rdoc.rdoc_files.include('vendor/rails/actionwebservice/ChangeLog')
+ rdoc.rdoc_files.include('vendor/rails/actionwebservice/CHANGELOG')
rdoc.rdoc_files.include('vendor/rails/actionwebservice/lib/action_web_service.rb')
rdoc.rdoc_files.include('vendor/rails/actionwebservice/lib/action_web_service/*.rb')
rdoc.rdoc_files.include('vendor/rails/actionwebservice/lib/action_web_service/api/*.rb')
@@ -99,6 +100,7 @@ Rake::RDocTask.new("apidoc") { |rdoc|
rdoc.rdoc_files.include('vendor/rails/actionwebservice/lib/action_web_service/protocol/*.rb')
rdoc.rdoc_files.include('vendor/rails/actionwebservice/lib/action_web_service/support/*.rb')
rdoc.rdoc_files.include('vendor/rails/activesupport/README')
+ rdoc.rdoc_files.include('vendor/rails/activesupport/CHANGELOG')
rdoc.rdoc_files.include('vendor/rails/activesupport/lib/active_support/**/*.rb')
}