technomancy-harker 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/History.txt +12 -0
  2. data/Manifest.txt +64 -0
  3. data/README.rdoc +65 -0
  4. data/Rakefile +16 -0
  5. data/bin/harker +19 -0
  6. data/lib/harker/gemify.rb +40 -0
  7. data/lib/harker/rails_configuration.rb +27 -0
  8. data/lib/harker/server.rb +119 -0
  9. data/lib/harker.rb +105 -0
  10. data/test/sample/Manifest.txt +53 -0
  11. data/test/sample/README.rdoc +46 -0
  12. data/test/sample/Rakefile +16 -0
  13. data/test/sample/app/controllers/application_controller.rb +10 -0
  14. data/test/sample/app/controllers/harks_controller.rb +6 -0
  15. data/test/sample/app/helpers/application_helper.rb +3 -0
  16. data/test/sample/app/helpers/harks_helper.rb +2 -0
  17. data/test/sample/app/models/hark.rb +2 -0
  18. data/test/sample/bin/sample_rails +5 -0
  19. data/test/sample/config/boot.rb +110 -0
  20. data/test/sample/config/database.yml +22 -0
  21. data/test/sample/config/environment.rb +41 -0
  22. data/test/sample/config/environments/development.rb +17 -0
  23. data/test/sample/config/environments/production.rb +28 -0
  24. data/test/sample/config/environments/test.rb +28 -0
  25. data/test/sample/config/initializers/backtrace_silencers.rb +7 -0
  26. data/test/sample/config/initializers/inflections.rb +10 -0
  27. data/test/sample/config/initializers/mime_types.rb +5 -0
  28. data/test/sample/config/initializers/new_rails_defaults.rb +19 -0
  29. data/test/sample/config/initializers/session_store.rb +15 -0
  30. data/test/sample/config/locales/en.yml +5 -0
  31. data/test/sample/config/routes.rb +45 -0
  32. data/test/sample/db/migrate/20090326050232_create_harks.rb +12 -0
  33. data/test/sample/lib/sample_rails.rb +2 -0
  34. data/test/sample/public/404.html +30 -0
  35. data/test/sample/public/422.html +30 -0
  36. data/test/sample/public/500.html +30 -0
  37. data/test/sample/public/favicon.ico +0 -0
  38. data/test/sample/public/images/rails.png +0 -0
  39. data/test/sample/public/index.html +275 -0
  40. data/test/sample/public/javascripts/application.js +2 -0
  41. data/test/sample/public/javascripts/controls.js +963 -0
  42. data/test/sample/public/javascripts/dragdrop.js +973 -0
  43. data/test/sample/public/javascripts/effects.js +1128 -0
  44. data/test/sample/public/javascripts/prototype.js +4320 -0
  45. data/test/sample/public/robots.txt +5 -0
  46. data/test/sample/script/about +4 -0
  47. data/test/sample/script/console +3 -0
  48. data/test/sample/script/dbconsole +3 -0
  49. data/test/sample/script/destroy +3 -0
  50. data/test/sample/script/generate +3 -0
  51. data/test/sample/script/performance/benchmarker +3 -0
  52. data/test/sample/script/performance/profiler +3 -0
  53. data/test/sample/script/plugin +3 -0
  54. data/test/sample/script/runner +3 -0
  55. data/test/sample/script/server +3 -0
  56. data/test/sample/test/fixtures/harks.yml +7 -0
  57. data/test/sample/test/functional/harks_controller_test.rb +8 -0
  58. data/test/sample/test/performance/browsing_test.rb +9 -0
  59. data/test/sample/test/test_helper.rb +38 -0
  60. data/test/sample/test/unit/hark_test.rb +8 -0
  61. data/test/sample/test/unit/helpers/harks_helper_test.rb +4 -0
  62. data/test/test_harker.rb +83 -0
  63. metadata +159 -0
data/History.txt ADDED
@@ -0,0 +1,12 @@
1
+ === 0.0.3 / 2009-03-26
2
+
3
+ * A release!
4
+ * First pass at automating gemification of Rails apps with bin/harker.
5
+ * Swapped order of Harker.launch args; now action then instance dir.
6
+ * Apps don't need config/environment.rb tweaks to use harker.
7
+ * Got some docs; yay.
8
+
9
+ === 0.0.1 / 2009-03-25
10
+
11
+ * Birthday!
12
+
data/Manifest.txt ADDED
@@ -0,0 +1,64 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.rdoc
4
+ Rakefile
5
+ bin/harker
6
+ lib/harker.rb
7
+ lib/harker/gemify.rb
8
+ lib/harker/rails_configuration.rb
9
+ lib/harker/server.rb
10
+ test/sample/Manifest.txt
11
+ test/sample/README.rdoc
12
+ test/sample/Rakefile
13
+ test/sample/app/controllers/application_controller.rb
14
+ test/sample/app/controllers/harks_controller.rb
15
+ test/sample/app/helpers/application_helper.rb
16
+ test/sample/app/helpers/harks_helper.rb
17
+ test/sample/app/models/hark.rb
18
+ test/sample/bin/sample_rails
19
+ test/sample/config/boot.rb
20
+ test/sample/config/database.yml
21
+ test/sample/config/environment.rb
22
+ test/sample/config/environments/development.rb
23
+ test/sample/config/environments/production.rb
24
+ test/sample/config/environments/test.rb
25
+ test/sample/config/initializers/backtrace_silencers.rb
26
+ test/sample/config/initializers/inflections.rb
27
+ test/sample/config/initializers/mime_types.rb
28
+ test/sample/config/initializers/new_rails_defaults.rb
29
+ test/sample/config/initializers/session_store.rb
30
+ test/sample/config/locales/en.yml
31
+ test/sample/config/routes.rb
32
+ test/sample/db/migrate/20090326050232_create_harks.rb
33
+ test/sample/lib/sample_rails.rb
34
+ test/sample/log/development.log
35
+ test/sample/log/test.log
36
+ test/sample/public/404.html
37
+ test/sample/public/422.html
38
+ test/sample/public/500.html
39
+ test/sample/public/favicon.ico
40
+ test/sample/public/images/rails.png
41
+ test/sample/public/index.html
42
+ test/sample/public/javascripts/application.js
43
+ test/sample/public/javascripts/controls.js
44
+ test/sample/public/javascripts/dragdrop.js
45
+ test/sample/public/javascripts/effects.js
46
+ test/sample/public/javascripts/prototype.js
47
+ test/sample/public/robots.txt
48
+ test/sample/script/about
49
+ test/sample/script/console
50
+ test/sample/script/dbconsole
51
+ test/sample/script/destroy
52
+ test/sample/script/generate
53
+ test/sample/script/performance/benchmarker
54
+ test/sample/script/performance/profiler
55
+ test/sample/script/plugin
56
+ test/sample/script/runner
57
+ test/sample/script/server
58
+ test/sample/test/fixtures/harks.yml
59
+ test/sample/test/functional/harks_controller_test.rb
60
+ test/sample/test/performance/browsing_test.rb
61
+ test/sample/test/test_helper.rb
62
+ test/sample/test/unit/hark_test.rb
63
+ test/sample/test/unit/helpers/harks_helper_test.rb
64
+ test/test_harker.rb
data/README.rdoc ADDED
@@ -0,0 +1,65 @@
1
+ = Harker
2
+
3
+ http://github.com/technomancy/harker
4
+
5
+ == Description
6
+
7
+ Harker means Rails deployments via RubyGems--because a package manager
8
+ is a terrible thing to waste.
9
+
10
+ == Setup
11
+
12
+ Your Rails app will need to be modified a bit to become a gem and work
13
+ with Harker. Running "harker /path/to/rails/app" will attempt to turn
14
+ it into a gem that uses Hoe. It probably won't be perfect, but it's a
15
+ start. See the app in test/sample/ for an example of how this works.
16
+
17
+ You don't have to use Hoe if you want to turn your app into a gem
18
+ manually or using another library, but it helps.
19
+
20
+ == Usage
21
+
22
+ Once your app is a gem, install it locally with "rake install_gem",
23
+ and you should be able to use the bin wrapper to generate a new
24
+ instance:
25
+
26
+ $ your_app init /var/myapp
27
+
28
+ Then edit /var/myapp/database.yml with your database settings. At that
29
+ point you should be able to bring up your database:
30
+
31
+ $ RAILS_ENV=production your_app migrate /var/myapp
32
+
33
+ Test it out by dropping into the console:
34
+
35
+ $ RAILS_ENV=production your_app console /var/myapp
36
+
37
+ Then you can start and stop your application server via Rack:
38
+
39
+ $ RAILS_ENV=production your_app start /var/myapp
40
+ $ RAILS_ENV=production your_app stop /var/myapp
41
+
42
+ If you omit the second argument, it defaults to the current directory.
43
+
44
+ For deployment, simply publish your gem to a gem server (public or
45
+ private), install it on the target server, and launch it via the bin
46
+ wrappers.
47
+
48
+ TODO: automate /etc/init.d scripts?
49
+
50
+ == Requirements
51
+
52
+ * rails (at least 2.3.2)
53
+ * a Rails app to use it with
54
+ * rubygems
55
+ * hoe (technically optional)
56
+
57
+ == Install
58
+
59
+ * sudo gem install technomancy-harker --source=http://gems.github.com --source=http://gems.rubyforge.org
60
+
61
+ == License
62
+
63
+ Copyright (c) 2009 Phil Hagelberg.
64
+
65
+ Licensed under the same terms as Ruby.
data/Rakefile ADDED
@@ -0,0 +1,16 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+ require './lib/harker.rb'
6
+
7
+ Hoe.new('harker', Harker::VERSION) do |p|
8
+ p.readme_file = 'README.rdoc'
9
+ p.summary = "Concourse is a tool to make planning gatherings easy."
10
+ p.extra_deps << ["rails", "~> 2.3.2"]
11
+ p.extra_dev_deps << ["minitest", "~> 1.3.1"]
12
+ p.extra_dev_deps << ["sqlite3-ruby", "~> 1.2.4"]
13
+ p.developer('Phil Hagelberg', 'technomancy@gmail.com')
14
+ end
15
+
16
+ # vim: syntax=Ruby
data/bin/harker ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'harker/gemify'
4
+
5
+ begin
6
+ gem 'hoe'
7
+ rescue LoadError
8
+ abort 'Hoe not found. You can continue without hoe if you gemify
9
+ your app yourself; see Harker documentation for details.' # TODO: document!
10
+ end
11
+
12
+ if ARGV.include?('-h') or ARGV.include?('--help') or ARGV.size > 1
13
+ puts "Usage: #{File.dirname($0)} [RAILS_ROOT]"
14
+ puts
15
+ puts "Attempts to turn your Rails app into a gem for deployment with harker."
16
+ exit
17
+ end
18
+
19
+ Harker.gemify(ARGV.shift || Dir.pwd)
@@ -0,0 +1,40 @@
1
+ require 'harker'
2
+
3
+ module Harker
4
+ def self.gemify(rails_root)
5
+ project_name = File.basename(rails_root)
6
+
7
+ if File.exist?(rails_root + "/bin/#{project_name}", 'w') or
8
+ File.exist?(rails_root + "/lib/#{project_name}.rb", 'w')
9
+ abort "Can't write gem files without overwriting existing ones.
10
+ Try manually gemifying."
11
+ end
12
+
13
+ # TODO: can we specify the version better?
14
+ hoe = "Hoe.new('#{project_name}', '1.0.0') do |p|
15
+ p.extra_deps << ['rails', '~> 2.3.2']
16
+ p.extra_deps << ['harker', '~> #{Harker::VERSION}']
17
+ p.developer('Your Name', 'you@example.com') # FIXME!
18
+ end"
19
+
20
+ bin = "#!/usr/bin/env ruby
21
+ require 'rubygems'
22
+ require 'harker'
23
+
24
+ Harker.launch(File.basename($0), ARGV)"
25
+
26
+ lib = "# Allow rubygems to load this app
27
+ require File.dirname(__FILE__) + '/../config/environment'"
28
+
29
+ File.open(rails_root + '/Rakefile', 'a') { |fp| fp.puts hoe }
30
+ puts "Added hoe block to Rakefile."
31
+ File.open(rails_root + "/bin/#{project_name}", 'w') { fp.puts bin }
32
+ puts "Wrote bin launcher."
33
+ File.open(rails_root + "/lib/#{project_name}.rb", 'w') { fp.puts lib }
34
+ puts "Wrote lib file."
35
+ system "cd #{rails_root}; rake check_manifest | patch"
36
+ puts "Wrote manifest."
37
+
38
+ puts "Done! Try running rake install_gem."
39
+ end
40
+ end
@@ -0,0 +1,27 @@
1
+ # TODO: not sure if my Rails patches cover tmp/sessions or tmp/sockets
2
+
3
+ class Rails::Configuration
4
+ attr_accessor :tmp_dir
5
+
6
+ def default_tmp_dir
7
+ File.join(root_path, 'tmp')
8
+ end
9
+
10
+ def default_cache_store
11
+ if File.exist? File.join(default_tmp_dir, 'cache')
12
+ [ :file_store, File.join(default_tmp_dir, 'cache') ]
13
+ else
14
+ :memory_store
15
+ end
16
+ end
17
+ end
18
+
19
+ class Rails::Initializer
20
+ def self.run(command = :process, configuration = Configuration.new)
21
+ yield configuration if block_given?
22
+ Harker.configure(configuration)
23
+ initializer = new configuration
24
+ initializer.send(command)
25
+ initializer
26
+ end
27
+ end
@@ -0,0 +1,119 @@
1
+ # A patched copy of what Rails' script/server runs.
2
+ # Only two changes were made, noted below by comments beginning with "Harker"
3
+
4
+ require 'active_support'
5
+ require 'action_controller'
6
+
7
+ require 'fileutils'
8
+ require 'optparse'
9
+
10
+ # TODO: Push Thin adapter upstream so we don't need worry about requiring it
11
+ begin
12
+ require_library_or_gem 'thin'
13
+ rescue Exception
14
+ # Thin not available
15
+ end
16
+
17
+ options = {
18
+ :Port => 3000,
19
+ :Host => "0.0.0.0",
20
+ :environment => (ENV['RAILS_ENV'] || "development").dup,
21
+ :config => RAILS_ROOT + "/config.ru",
22
+ :detach => false,
23
+ :debugger => false,
24
+ :path => nil
25
+ }
26
+
27
+ ARGV.clone.options do |opts|
28
+ opts.on("-p", "--port=port", Integer,
29
+ "Runs Rails on the specified port.", "Default: 3000") { |v| options[:Port] = v }
30
+ opts.on("-b", "--binding=ip", String,
31
+ "Binds Rails to the specified ip.", "Default: 0.0.0.0") { |v| options[:Host] = v }
32
+ opts.on("-c", "--config=file", String,
33
+ "Use custom rackup configuration file") { |v| options[:config] = v }
34
+ opts.on("-d", "--daemon", "Make server run as a Daemon.") { options[:detach] = true }
35
+ opts.on("-u", "--debugger", "Enable ruby-debugging for the server.") { options[:debugger] = true }
36
+ opts.on("-e", "--environment=name", String,
37
+ "Specifies the environment to run this server under (test/development/production).",
38
+ "Default: development") { |v| options[:environment] = v }
39
+ opts.on("-P", "--path=/path", String, "Runs Rails app mounted at a specific path.", "Default: /") { |v| options[:path] = v }
40
+
41
+ opts.separator ""
42
+
43
+ opts.on("-h", "--help", "Show this help message.") { puts opts; exit }
44
+
45
+ opts.parse!
46
+ end
47
+
48
+ server = Rack::Handler.get(ARGV.first) rescue nil
49
+ unless server
50
+ begin
51
+ server = Rack::Handler::Mongrel
52
+ rescue LoadError => e
53
+ server = Rack::Handler::WEBrick
54
+ end
55
+ end
56
+
57
+ puts "=> Booting #{ActiveSupport::Inflector.demodulize(server)}"
58
+ puts "=> Rails #{Rails.version} application starting on http://#{options[:Host]}:#{options[:Port]}#{options[:path]}"
59
+
60
+ %w(cache pids sessions sockets).each do |dir_to_make|
61
+ # Harker: patched to use Rails.configuration.tmp_dir
62
+ FileUtils.mkdir_p(File.join(Rails.configuration.tmp_dir, dir_to_make))
63
+ end
64
+
65
+ if options[:detach]
66
+ Process.daemon
67
+ # Harker: patched to use Rails.configuration.tmp_dir
68
+ pid = File.join(Rails.configuration.tmp_dir, 'pids', 'server.pid')
69
+ File.open(pid, 'w'){ |f| f.write(Process.pid) }
70
+ at_exit { File.delete(pid) if File.exist?(pid) }
71
+ end
72
+
73
+ ENV["RAILS_ENV"] = options[:environment]
74
+ RAILS_ENV.replace(options[:environment]) if defined?(RAILS_ENV)
75
+
76
+ if File.exist?(options[:config])
77
+ config = options[:config]
78
+ if config =~ /\.ru$/
79
+ cfgfile = File.read(config)
80
+ if cfgfile[/^#\\(.*)/]
81
+ opts.parse!($1.split(/\s+/))
82
+ end
83
+ inner_app = eval("Rack::Builder.new {( " + cfgfile + "\n )}.to_app", nil, config)
84
+ else
85
+ require config
86
+ inner_app = Object.const_get(File.basename(config, '.rb').capitalize)
87
+ end
88
+ else
89
+ require RAILS_ROOT + "/config/environment"
90
+ inner_app = ActionController::Dispatcher.new
91
+ end
92
+
93
+ if options[:path].nil?
94
+ map_path = "/"
95
+ else
96
+ ActionController::Base.relative_url_root = options[:path]
97
+ map_path = options[:path]
98
+ end
99
+
100
+ app = Rack::Builder.new {
101
+ use Rails::Rack::LogTailer unless options[:detach]
102
+ use Rails::Rack::Debugger if options[:debugger]
103
+ map map_path do
104
+ use Rails::Rack::Static
105
+ run inner_app
106
+ end
107
+ }.to_app
108
+
109
+ puts "=> Call with -d to detach"
110
+
111
+ trap(:INT) { exit }
112
+
113
+ puts "=> Ctrl-C to shutdown server"
114
+
115
+ begin
116
+ server.run(app, options.merge(:AccessLog => []))
117
+ ensure
118
+ puts 'Exiting'
119
+ end
data/lib/harker.rb ADDED
@@ -0,0 +1,105 @@
1
+ require 'fileutils'
2
+
3
+ # Harker lets you deploy Rails apps via RubyGems.
4
+ module Harker
5
+ VERSION = '0.0.3'
6
+ ACTIONS = %w(start stop restart init migrate console foreground)
7
+
8
+ module_function
9
+
10
+ # Dispatch based on user's command
11
+ def launch(name, args)
12
+ action = args.shift
13
+
14
+ unless ACTIONS.include?(action)
15
+ abort "Usage: #{@name} INSTANCE_DIR (#{ACTIONS.join('|')})"
16
+ end
17
+
18
+ @root = File.expand_path(args.shift || Dir.pwd)
19
+ @name = name
20
+
21
+ load_app unless action == 'init'
22
+ self.send(action)
23
+ end
24
+
25
+ # Start the application server in the foreground.
26
+ def foreground
27
+ start(false)
28
+ end
29
+
30
+ # Start and daemonize the application server
31
+ def start(daemonize = true)
32
+ # can has internal consistency plz, Rails?
33
+ Rails::Rack::LogTailer::EnvironmentLog.replace(Rails.configuration.log_path)
34
+ # http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/2350
35
+ # Submitted a patch to Rails, but this lets it work with 2.3.2
36
+
37
+ ARGV.replace ["--config=#{@root}/config.ru"]
38
+ ARGV.push('--daemon') if daemonize
39
+
40
+ abort "Can't start; pidfile exists at #{pidfile}." if File.exist? pidfile
41
+ require 'harker/server'
42
+ end
43
+
44
+ def stop
45
+ abort "No pid at #{pidfile}." unless File.exist?(pidfile)
46
+ Process.kill('TERM', File.read(pidfile).to_i)
47
+ end
48
+
49
+ def restart
50
+ stop
51
+ start
52
+ end
53
+
54
+ # Initialize a new instance of your application
55
+ def init
56
+ FileUtils.mkdir_p(@root)
57
+ FileUtils.mkdir_p(@root + '/log')
58
+ FileUtils.mkdir_p(@root + '/tmp')
59
+
60
+ # TODO: use the in-gem copy of database.yml as a base for this
61
+ File.open("#{@root}/database.yml", 'w') do |fp|
62
+ # TODO: be smart about environments; bleh
63
+ fp.puts({ 'production' => { 'adapter' => 'sqlite3',
64
+ 'database' => @root + '/db.sqlite3',
65
+ 'pool' => 5, 'timeout' => 5000 }}.to_yaml)
66
+ end
67
+
68
+ # TODO: write a default config.ru?
69
+
70
+ puts "Initialized #{@name} instance in #{@root}..."
71
+ puts
72
+ puts "Configure your database by editing #{@root}/database.yml."
73
+ puts "Optionally configure your web server via rack in #{@root}/config.ru."
74
+ puts
75
+ puts "Migrate your DB with: #{@name} migrate"
76
+ puts "Then launch with: #{@name} start"
77
+ end
78
+
79
+ def migrate
80
+ ActiveRecord::Migrator.migrate(RAILS_ROOT + '/db/migrate',
81
+ ENV["VERSION"] && ENV["VERSION"].to_i)
82
+ end
83
+
84
+ def console
85
+ require 'irb'
86
+ IRB.start
87
+ end
88
+
89
+ def configure(config)
90
+ config.database_configuration_file = File.join(@root, 'database.yml')
91
+ config.log_path = File.join(@root, 'log', "#{RAILS_ENV}.log")
92
+
93
+ # 2.3.2 doesn't support tmp_dir config option.
94
+ require 'harker/rails_configuration' unless config.respond_to?(:tmp_dir=)
95
+ config.tmp_dir = File.join(@root, '/tmp')
96
+ end
97
+
98
+ def load_app
99
+ require @name
100
+ end
101
+
102
+ def pidfile
103
+ File.join(@root, 'tmp', 'pids', 'server.pid')
104
+ end
105
+ end
@@ -0,0 +1,53 @@
1
+ Manifest.txt
2
+ README.rdoc
3
+ Rakefile
4
+ app/controllers/application_controller.rb
5
+ app/controllers/harks_controller.rb
6
+ app/helpers/application_helper.rb
7
+ app/helpers/harks_helper.rb
8
+ app/models/hark.rb
9
+ bin/sample_rails
10
+ config/boot.rb
11
+ config/database.yml
12
+ config/environment.rb
13
+ config/environments/development.rb
14
+ config/environments/production.rb
15
+ config/environments/test.rb
16
+ config/initializers/backtrace_silencers.rb
17
+ config/initializers/inflections.rb
18
+ config/initializers/mime_types.rb
19
+ config/initializers/new_rails_defaults.rb
20
+ config/initializers/session_store.rb
21
+ config/locales/en.yml
22
+ config/routes.rb
23
+ db/migrate/20090326050232_create_harks.rb
24
+ lib/sample_rails.rb
25
+ public/404.html
26
+ public/422.html
27
+ public/500.html
28
+ public/favicon.ico
29
+ public/images/rails.png
30
+ public/index.html
31
+ public/javascripts/application.js
32
+ public/javascripts/controls.js
33
+ public/javascripts/dragdrop.js
34
+ public/javascripts/effects.js
35
+ public/javascripts/prototype.js
36
+ public/robots.txt
37
+ script/about
38
+ script/console
39
+ script/dbconsole
40
+ script/destroy
41
+ script/generate
42
+ script/performance/benchmarker
43
+ script/performance/profiler
44
+ script/plugin
45
+ script/runner
46
+ script/server
47
+ test/fixtures/harks.yml
48
+ test/functional/harks_controller_test.rb
49
+ test/performance/browsing_test.rb
50
+ test/test_helper.rb
51
+ test/unit/hark_test.rb
52
+ test/unit/helpers/harks_helper_test.rb
53
+ tmp
@@ -0,0 +1,46 @@
1
+ = Harker Sample
2
+
3
+ http://github.com/technomancy/harker
4
+
5
+ == Description
6
+
7
+ A sample application.
8
+
9
+ == Usage
10
+
11
+ Just for tests.
12
+
13
+ == Requirements
14
+
15
+ * rails (at least 2.3.2)
16
+ * rubygems
17
+ * hoe
18
+
19
+ == Install
20
+
21
+ * sudo gem install harker
22
+
23
+ == License
24
+
25
+ (The MIT License)
26
+
27
+ Copyright (c) 2009 Phil Hagelberg
28
+
29
+ Permission is hereby granted, free of charge, to any person obtaining
30
+ a copy of this software and associated documentation files (the
31
+ 'Software'), to deal in the Software without restriction, including
32
+ without limitation the rights to use, copy, modify, merge, publish,
33
+ distribute, sublicense, and/or sell copies of the Software, and to
34
+ permit persons to whom the Software is furnished to do so, subject to
35
+ the following conditions:
36
+
37
+ The above copyright notice and this permission notice shall be
38
+ included in all copies or substantial portions of the Software.
39
+
40
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
41
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
42
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
43
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
44
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
45
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
46
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,16 @@
1
+ require(File.join(File.dirname(__FILE__), 'config', 'boot'))
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+ require 'rake/testtask'
6
+ require 'rake/rdoctask'
7
+ require 'tasks/rails'
8
+
9
+ # TODO: Hoe and Rails' test tasks stomp on each other
10
+ # TODO: specify version sanely
11
+ Hoe.new('sample_rails', '1.0.0') do |p|
12
+ p.readme_file = 'README.rdoc'
13
+ p.extra_deps << ["rails", "~> 2.3.2"]
14
+ p.extra_deps << ["harker", "~> 0.0.1"]
15
+ p.developer('Phil Hagelberg', 'technomancy@gmail.com')
16
+ end
@@ -0,0 +1,10 @@
1
+ # Filters added to this controller apply to all controllers in the application.
2
+ # Likewise, all the methods added will be available for all controllers.
3
+
4
+ class ApplicationController < ActionController::Base
5
+ helper :all # include all helpers, all the time
6
+ protect_from_forgery # See ActionController::RequestForgeryProtection for details
7
+
8
+ # Scrub sensitive parameters from your log
9
+ # filter_parameter_logging :password
10
+ end
@@ -0,0 +1,6 @@
1
+ class HarksController < ApplicationController
2
+ def index
3
+ Hark.create(:tidings => "Joy!") if Hark.count == 0
4
+ render :text => Hark.find(:all).map{ |h| h.attributes }.to_yaml
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ # Methods added to this helper will be available to all templates in the application.
2
+ module ApplicationHelper
3
+ end
@@ -0,0 +1,2 @@
1
+ module HarksHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ class Hark < ActiveRecord::Base
2
+ end
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'harker'
4
+
5
+ Harker.launch(File.basename($0), ARGV)