Skip to content

Instantly share code, notes, and snippets.

@aitor
Created June 16, 2009 10:58
Show Gist options
  • Save aitor/130641 to your computer and use it in GitHub Desktop.
Save aitor/130641 to your computer and use it in GitHub Desktop.
require 'colored'
def add_desert_require
sentinel = 'Rails::Initializer.run do |config|'
gsub_file 'config/environment.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
"\nrequire 'desert'\n#{match}"
end
end
def gsub_file(path, regexp, *args, &block)
content = File.read(path).gsub(regexp, *args, &block)
File.open(path, 'wb') { |file| file.write(content) }
end
def install_require_gems
run "gem sources -a http://gems.github.com"
gem 'desert', :version => '0.5', :lib => 'desert'
gem 'mislav-will_paginate', :version => '~> 2.3.6', :lib => 'will_paginate', :source => 'http://gems.github.com'
gem 'tog-tog', :version => '0.5', :lib => 'tog'
gem 'mocha'
gem 'thoughtbot-factory_girl', :lib => 'factory_girl'
rake "gems:install", :sudo => true
end
def install_tog_core_plugins
plugin 'tog_core', :git => "git://github.com/tog/tog_core.git"
plugin 'tog_social', :git => "git://github.com/tog/tog_social.git"
plugin 'tog_mail', :git => "git://github.com/tog/tog_mail.git"
route "map.routes_from_plugin 'tog_core'"
route "map.routes_from_plugin 'tog_mail'"
route "map.routes_from_plugin 'tog_social'"
file "db/migrate/" + Time.now.strftime("%Y%m%d%H%M%S") + "_install_tog.rb",
%q{class InstallTog < ActiveRecord::Migration
def self.up
migrate_plugin "tog_core", 6
migrate_plugin "tog_social", 5
migrate_plugin "tog_mail", 2
end
def self.down
migrate_plugin "tog_mail", 0
migrate_plugin "tog_social", 0
migrate_plugin "tog_core", 0
end
end
}
end
def generate_acts_as_commentable_migration
file "db/migrate/" + Time.now.strftime("%Y%m%d%H%M%S") + "_acts_as_commentable.rb",
%q{class ActsAsCommentable < ActiveRecord::Migration
def self.up
create_table "comments", :force => true do |t|
t.column "title", :string, :limit => 50, :default => ""
t.column "comment", :text, :default => ""
t.column "created_at", :datetime, :null => false
t.column "commentable_id", :integer, :default => 0, :null => false
t.column "commentable_type", :string, :limit => 15, :default => "", :null => false
t.column "user_id", :integer, :default => 0, :null => false
end
add_index "comments", ["user_id"], :name => "fk_comments_user"
end
def self.down
drop_table :comments
end
end
}
end
def generate_acts_as_rateable_migration
file "db/migrate/" + Time.now.strftime("%Y%m%d%H%M%S") + "_add_ratings.rb",
%q{class AddRatings < ActiveRecord::Migration
def self.up
create_table :ratings do |t|
t.column :rating, :integer # You can add a default value here if you wish
t.column :rateable_id, :integer, :null => false
t.column :rateable_type, :string, :null => false
end
add_index :ratings, [:rateable_id, :rating] # Not required, but should help more than it hurts
end
def self.down
drop_table :ratings
end
end
}
end
def install_tog_user_plugin
if yes?("Install tog_user?")
plugin 'tog_user', :git => "git://github.com/tog/tog_user.git"
route "map.routes_from_plugin 'tog_user'"
file "db/migrate/" + Time.now.strftime("%Y%m%d%H%M%S") + "_install_tog_user.rb",
%q{class InstallTogUser < ActiveRecord::Migration
def self.up
migrate_plugin "tog_user", 1
end
def self.down
migrate_plugin "tog_user", 0
end
end
}
if yes?("Create a default admin user?")
name = ask("username?")
pwd = ask("password?")
puts "nothing yet, sorry :("
end
end
end
def run_tog_tests
if yes?("Run tog's tests?")
rake "db:test:prepare"
rake "tog:plugins:test"
end
end
def introduction_banner
puts %q{
#{"Welcome to the Tog installer, v0.5.1".yellow_on_blue.bold} "
}
puts %q{
This installer will guide you through the entire installation process. It
shouldn't take more than 3 minutes in total.
Here's what you can expect from the installation process:
1. All the tog's dependencies will be installed for you.
2. The installer will generate a few migrations required by the dependencies
3. You will be able to install tog_user.
4. You will be able to create an initial admin user.
Don't worry if anything goes wrong. This installer will advise you on how to
solve any problems.
Press Enter to continue, or Ctrl-C to abort.
}
gets
end
introduction_banner
add_desert_require
install_require_gems
{
'acts_as_commentable' => "http://juixe.com/svn/acts_as_commentable",
'acts_as_state_machine' => "http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk",
'seo_urls' => "http://svn.redshiftmedia.com/svn/plugins/seo_urls"
}.each_pair { |name, url| plugin name, :svn => url }
{
'acts_as_taggable_on_steroids' => "git://github.com/jviney/acts_as_taggable_on_steroids.git",
'acts_as_rateable' => "git://github.com/andry1/acts_as_rateable.git",
'acts_as_abusable' => "git://github.com/linkingpaths/acts_as_abusable.git",
'acts_as_scribe' => "git://github.com/linkingpaths/acts_as_scribe.git",
'paperclip' => "git://github.com/thoughtbot/paperclip.git",
'viking' => "git://github.com/technoweenie/viking.git"
}.each_pair { |name, url| plugin name, :git => url }
generate_acts_as_commentable_migration
generate_acts_as_rateable_migration
generate "acts_as_abusable_migration"
generate "acts_as_taggable_migration"
generate "acts_as_scribe_migration"
install_tog_user_plugin
install_tog_core_plugins
run "echo \"require 'tasks/tog'\" >> Rakefile"
rake "tog:plugins:copy_resources"
rake "db:migrate"
run 'rm public/index.html'
run_tog_tests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment