aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBryan Helmkamp <bryan@brynary.com>2009-10-27 20:17:21 -0400
committerBryan Helmkamp <bryan@brynary.com>2009-10-27 20:17:21 -0400
commitefc167dc07e61cf18cfae8ccac23134d87299cc1 (patch)
tree72fb7086e77f0aae51fecb2a6cab0080d2ce5088
parent5b4c964104f3cfd08500b37a14e220219e695aee (diff)
downloadrails-efc167dc07e61cf18cfae8ccac23134d87299cc1.tar.gz
rails-efc167dc07e61cf18cfae8ccac23134d87299cc1.tar.bz2
rails-efc167dc07e61cf18cfae8ccac23134d87299cc1.zip
Dropping Jeweler in favor of some simple Thor tasks (for Gemcutter)
-rw-r--r--Rakefile31
-rw-r--r--Thorfile116
-rw-r--r--VERSION1
-rw-r--r--lib/arel.rb2
4 files changed, 118 insertions, 32 deletions
diff --git a/Rakefile b/Rakefile
index 0564da23ca..e1557bda70 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,37 +1,6 @@
require "rubygems"
begin
- require 'jeweler'
-rescue LoadError
- desc "Install gem using sudo"
- task(:install) do
- $stderr.puts "Jeweler not available. `gem install jeweler` to install this gem"
- end
-else
- Jeweler::Tasks.new do |s|
- s.name = "arel"
- s.authors = ["Bryan Helmkamp", "Nick Kallen"]
- s.email = "bryan" + "@" + "brynary.com"
- s.homepage = "http://github.com/brynary/arel"
- s.summary = "Arel is a relational algebra engine for Ruby"
- s.description = <<-EOS.strip
-Arel is a Relational Algebra for Ruby. It 1) simplifies the generation complex
-of SQL queries and it 2) adapts to various RDBMS systems. It is intended to be
-a framework framework; that is, you can build your own ORM with it, focusing on
-innovative object and collection modeling as opposed to database compatibility
-and query generation.
-EOS
- s.rubyforge_project = "arel"
- s.extra_rdoc_files = %w(README.markdown)
-
- s.add_dependency "activerecord", ">= 3.0pre"
- s.add_dependency "activesupport", ">= 3.0pre"
- end
-
- Jeweler::RubyforgeTasks.new
-end
-
-begin
require "spec/rake/spectask"
rescue LoadError
desc "Run specs"
diff --git a/Thorfile b/Thorfile
new file mode 100644
index 0000000000..edc39a16b0
--- /dev/null
+++ b/Thorfile
@@ -0,0 +1,116 @@
+module GemHelpers
+
+ def generate_gemspec
+ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), "lib")))
+ require "arel"
+
+ Gem::Specification.new do |s|
+ s.name = "arel"
+ s.version = Arel::VERSION
+ s.authors = ["Bryan Helmkamp", "Nick Kallen"]
+ s.email = "bryan@brynary.com"
+ s.homepage = "http://github.com/brynary/arel"
+ s.summary = "Arel is a relational algebra engine for Ruby"
+ s.description = <<-EOS.strip
+Arel is a Relational Algebra for Ruby. It 1) simplifies the generation complex
+of SQL queries and it 2) adapts to various RDBMS systems. It is intended to be
+a framework framework; that is, you can build your own ORM with it, focusing on
+innovative object and collection modeling as opposed to database compatibility
+and query generation.
+ EOS
+ s.rubyforge_project = "arel"
+
+ require "git"
+ repo = Git.open(".")
+
+ s.files = normalize_files(repo.ls_files.keys - repo.lib.ignored_files)
+ s.test_files = normalize_files(Dir['spec/**/*.rb'] - repo.lib.ignored_files)
+
+ s.has_rdoc = true
+ s.extra_rdoc_files = %w[README.markdown]
+
+ s.add_dependency "activerecord", ">= 3.0pre"
+ s.add_dependency "activesupport", ">= 3.0pre"
+ end
+ end
+
+ def normalize_files(array)
+ # only keep files, no directories, and sort
+ array.select do |path|
+ File.file?(path)
+ end.sort
+ end
+
+ # Adds extra space when outputting an array. This helps create better version
+ # control diffs, because otherwise it is all on the same line.
+ def prettyify_array(gemspec_ruby, array_name)
+ gemspec_ruby.gsub(/s\.#{array_name.to_s} = \[.+?\]/) do |match|
+ leadin, files = match[0..-2].split("[")
+ leadin + "[\n #{files.split(",").join(",\n ")}\n ]"
+ end
+ end
+
+ def read_gemspec
+ @read_gemspec ||= eval(File.read("arel.gemspec"))
+ end
+
+ def sh(command)
+ puts command
+ system command
+ end
+end
+
+class Default < Thor
+ include GemHelpers
+
+ desc "gemspec", "Regenerate arel.gemspec"
+ def gemspec
+ File.open("arel.gemspec", "w") do |file|
+ gemspec_ruby = generate_gemspec.to_ruby
+ gemspec_ruby = prettyify_array(gemspec_ruby, :files)
+ gemspec_ruby = prettyify_array(gemspec_ruby, :test_files)
+ gemspec_ruby = prettyify_array(gemspec_ruby, :extra_rdoc_files)
+
+ file.write gemspec_ruby
+ end
+
+ puts "Wrote gemspec to arel.gemspec"
+ read_gemspec.validate
+ end
+
+ desc "build", "Build a arel gem"
+ def build
+ sh "gem build arel.gemspec"
+ FileUtils.mkdir_p "pkg"
+ FileUtils.mv read_gemspec.file_name, "pkg"
+ end
+
+ desc "install", "Install the latest built gem"
+ def install
+ sh "gem install --local pkg/#{read_gemspec.file_name}"
+ end
+
+ desc "release", "Release the current branch to GitHub and Gemcutter"
+ def release
+ gemspec
+ build
+ Release.new.tag
+ Release.new.gem
+ end
+end
+
+class Release < Thor
+ include GemHelpers
+
+ desc "tag", "Tag the gem on the origin server"
+ def tag
+ release_tag = "v#{read_gemspec.version}"
+ sh "git tag -a #{release_tag} -m 'Tagging #{release_tag}'"
+ sh "git push origin #{release_tag}"
+ end
+
+ desc "gem", "Push the gem to Gemcutter"
+ def gem
+ sh "gem push pkg/#{read_gemspec.file_name}"
+ end
+end \ No newline at end of file
diff --git a/VERSION b/VERSION
deleted file mode 100644
index 17e51c385e..0000000000
--- a/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-0.1.1
diff --git a/lib/arel.rb b/lib/arel.rb
index a9413b0f1b..a9fe15c824 100644
--- a/lib/arel.rb
+++ b/lib/arel.rb
@@ -9,4 +9,6 @@ module Arel
require 'arel/algebra'
require 'arel/engines'
autoload :Session, 'arel/session'
+
+ VERSION = "0.1.2"
end \ No newline at end of file