houdini-rails3 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,19 +1,16 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "rails", "3.0.0"
4
- gem "capybara", ">= 0.3.9"
5
- gem "sqlite3-ruby", :require => "sqlite3"
6
-
3
+ gem "rails", "~>3.0.0"
7
4
  gem "tilt", "~> 1.1"
8
5
 
9
6
  if RUBY_VERSION < '1.9'
10
7
  gem "ruby-debug", ">= 0.10.3"
11
8
  end
12
9
 
13
-
14
- gem "rspec-rails", ">= 2.0.0.beta"
15
-
16
10
  group :development do
11
+ gem "rspec-rails", ">= 2.0.0.beta"
12
+ gem "capybara", ">= 0.3.9"
13
+ gem "sqlite3-ruby", :require => "sqlite3"
17
14
  gem "bundler", "~> 1.0.0"
18
15
  gem "jeweler", "~> 1.5.0.pre3"
19
16
  gem "rcov", ">= 0"
data/Gemfile.lock CHANGED
@@ -116,7 +116,7 @@ DEPENDENCIES
116
116
  bundler (~> 1.0.0)
117
117
  capybara (>= 0.3.9)
118
118
  jeweler (~> 1.5.0.pre3)
119
- rails (= 3.0.0)
119
+ rails (~> 3.0.0)
120
120
  rcov
121
121
  rspec-rails (>= 2.0.0.beta)
122
122
  ruby-debug (>= 0.10.3)
data/README.markdown ADDED
@@ -0,0 +1,71 @@
1
+ # Overview
2
+
3
+ This ruby gem is a Rails Engine for using the Houdini Mechanical Turk API. It provides easy integration into your models and sets up the necessary controllers to receive answers posted back to your app from Houdini.
4
+
5
+ Check out the [Houdini Documentation](http://houdinihq.com/documentation) for more info about the API.
6
+
7
+ # Installation (Rails 2.3.x)
8
+
9
+ Add the gem to your Gemfile
10
+
11
+ gem 'houdini-rails'
12
+
13
+ Configure a few constants in config/application.rb
14
+
15
+ config.after_initialize do
16
+ ::Houdini::KEY = 'YOUR_API_KEY'
17
+ ::Houdini::HOST = 'houdinihq.com' # or 'houdini-sandbox.heroku.com' for testing
18
+ ::Houdini::RAILS_HOST = 'your_app_domain.com'
19
+ end
20
+
21
+ You may want to configure the Houdini constants differently for each of you environments.
22
+
23
+ # Example Usage
24
+
25
+ Setup Houdini in your ActiveRecord model:
26
+
27
+ class Post < ActiveRecord::Base
28
+ include Houdini::Model
29
+
30
+ houdini :image_moderation,
31
+ :price => '0.01',
32
+ :title => 'Please moderate image',
33
+ :form_template => 'app/views/houdini_templates/post.html.erb',
34
+ :on_task_completion => :process_image_moderation_answer
35
+
36
+ after_create :moderate_image
37
+
38
+ def moderate_image
39
+ Houdini.perform!(:image_moderation, self)
40
+ end
41
+
42
+ def process_image_moderation_answer(params)
43
+ update_attribute(:flagged => params[:flagged])
44
+ end
45
+ end
46
+
47
+ Create a template for the form to be sent to Mechanical Turk:
48
+
49
+ <!--app/views/houdini_templates/post.html.erb -->
50
+
51
+ <h2>Review the image for offensiveness</h2>
52
+
53
+ <h3>Instructions</h3>
54
+ <p>Please review the image below.</p>
55
+
56
+ <img src="<%= post.image_url %>"><br/>
57
+
58
+ <input type="radio" name="flagged" value="yes" class="required">
59
+ Yes, this picture is offensive
60
+ </input>
61
+
62
+ <input type="radio" name="flagged" value="no" class="required">
63
+ No, this picture is okay
64
+ </input>
65
+
66
+ Post.houdini class method options:
67
+
68
+ * :price - Amount in cents you want to pay for the task to be completed
69
+ * :title - Title that Mechanical Turk workers will see when browsing/searching available tasks
70
+ * :form_template - ERB or HAML template used to render the form html.
71
+ * :on_task_completion - Method that Houdini should call when the answer is posted back to your app. The results of your form will be passed into the method as the only parameter. `{:flagged => 'yes'}` in the example above.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.2
@@ -5,16 +5,16 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{houdini-rails3}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Chris Conley"]
12
- s.date = %q{2010-10-08}
12
+ s.date = %q{2010-10-22}
13
13
  s.description = %q{Rails 3 Engine for using the Houdini Mechanical Turk API}
14
14
  s.email = %q{chris@chrisconley.me}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
- "README.rdoc"
17
+ "README.markdown"
18
18
  ]
19
19
  s.files = [
20
20
  ".document",
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
  "Gemfile",
24
24
  "Gemfile.lock",
25
25
  "LICENSE",
26
- "README.rdoc",
26
+ "README.markdown",
27
27
  "Rakefile",
28
28
  "VERSION",
29
29
  "app/controllers/houdini/postbacks_controller.rb",
@@ -105,12 +105,12 @@ Gem::Specification.new do |s|
105
105
  s.specification_version = 3
106
106
 
107
107
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
108
- s.add_runtime_dependency(%q<rails>, ["= 3.0.0"])
109
- s.add_runtime_dependency(%q<capybara>, [">= 0.3.9"])
110
- s.add_runtime_dependency(%q<sqlite3-ruby>, [">= 0"])
108
+ s.add_runtime_dependency(%q<rails>, ["~> 3.0.0"])
111
109
  s.add_runtime_dependency(%q<tilt>, ["~> 1.1"])
112
110
  s.add_runtime_dependency(%q<ruby-debug>, [">= 0.10.3"])
113
- s.add_runtime_dependency(%q<rspec-rails>, [">= 2.0.0.beta"])
111
+ s.add_development_dependency(%q<rspec-rails>, [">= 2.0.0.beta"])
112
+ s.add_development_dependency(%q<capybara>, [">= 0.3.9"])
113
+ s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
114
114
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
115
115
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
116
116
  s.add_development_dependency(%q<rcov>, [">= 0"])
@@ -120,12 +120,12 @@ Gem::Specification.new do |s|
120
120
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
121
121
  s.add_development_dependency(%q<rcov>, [">= 0"])
122
122
  else
123
- s.add_dependency(%q<rails>, ["= 3.0.0"])
124
- s.add_dependency(%q<capybara>, [">= 0.3.9"])
125
- s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
123
+ s.add_dependency(%q<rails>, ["~> 3.0.0"])
126
124
  s.add_dependency(%q<tilt>, ["~> 1.1"])
127
125
  s.add_dependency(%q<ruby-debug>, [">= 0.10.3"])
128
126
  s.add_dependency(%q<rspec-rails>, [">= 2.0.0.beta"])
127
+ s.add_dependency(%q<capybara>, [">= 0.3.9"])
128
+ s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
129
129
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
130
130
  s.add_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
131
131
  s.add_dependency(%q<rcov>, [">= 0"])
@@ -136,12 +136,12 @@ Gem::Specification.new do |s|
136
136
  s.add_dependency(%q<rcov>, [">= 0"])
137
137
  end
138
138
  else
139
- s.add_dependency(%q<rails>, ["= 3.0.0"])
140
- s.add_dependency(%q<capybara>, [">= 0.3.9"])
141
- s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
139
+ s.add_dependency(%q<rails>, ["~> 3.0.0"])
142
140
  s.add_dependency(%q<tilt>, ["~> 1.1"])
143
141
  s.add_dependency(%q<ruby-debug>, [">= 0.10.3"])
144
142
  s.add_dependency(%q<rspec-rails>, [">= 2.0.0.beta"])
143
+ s.add_dependency(%q<capybara>, [">= 0.3.9"])
144
+ s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
145
145
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
146
146
  s.add_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
147
147
  s.add_dependency(%q<rcov>, [">= 0"])
@@ -35,6 +35,7 @@ module Houdini
35
35
 
36
36
  def generate_form_html(template_path)
37
37
  template = Tilt.new(File.join(Rails.root.to_s, template_path))
38
+ # TODO: don't force the template name
38
39
  template.render(self, self.class.name.downcase.to_sym => self)
39
40
  end
40
41
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: houdini-rails3
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Chris Conley
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-08 00:00:00 -04:00
18
+ date: 2010-10-22 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -25,7 +25,7 @@ dependencies:
25
25
  version_requirements: &id001 !ruby/object:Gem::Requirement
26
26
  none: false
27
27
  requirements:
28
- - - "="
28
+ - - ~>
29
29
  - !ruby/object:Gem::Version
30
30
  hash: 7
31
31
  segments:
@@ -37,80 +37,80 @@ dependencies:
37
37
  - !ruby/object:Gem::Dependency
38
38
  type: :runtime
39
39
  prerelease: false
40
- name: capybara
40
+ name: tilt
41
41
  version_requirements: &id002 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
- - - ">="
44
+ - - ~>
45
45
  - !ruby/object:Gem::Version
46
- hash: 1
46
+ hash: 13
47
47
  segments:
48
- - 0
49
- - 3
50
- - 9
51
- version: 0.3.9
48
+ - 1
49
+ - 1
50
+ version: "1.1"
52
51
  requirement: *id002
53
52
  - !ruby/object:Gem::Dependency
54
53
  type: :runtime
55
54
  prerelease: false
56
- name: sqlite3-ruby
55
+ name: ruby-debug
57
56
  version_requirements: &id003 !ruby/object:Gem::Requirement
58
57
  none: false
59
58
  requirements:
60
59
  - - ">="
61
60
  - !ruby/object:Gem::Version
62
- hash: 3
61
+ hash: 49
63
62
  segments:
64
63
  - 0
65
- version: "0"
64
+ - 10
65
+ - 3
66
+ version: 0.10.3
66
67
  requirement: *id003
67
68
  - !ruby/object:Gem::Dependency
68
- type: :runtime
69
+ type: :development
69
70
  prerelease: false
70
- name: tilt
71
+ name: rspec-rails
71
72
  version_requirements: &id004 !ruby/object:Gem::Requirement
72
73
  none: false
73
74
  requirements:
74
- - - ~>
75
+ - - ">="
75
76
  - !ruby/object:Gem::Version
76
- hash: 13
77
+ hash: 31098209
77
78
  segments:
78
- - 1
79
- - 1
80
- version: "1.1"
79
+ - 2
80
+ - 0
81
+ - 0
82
+ - beta
83
+ version: 2.0.0.beta
81
84
  requirement: *id004
82
85
  - !ruby/object:Gem::Dependency
83
- type: :runtime
86
+ type: :development
84
87
  prerelease: false
85
- name: ruby-debug
88
+ name: capybara
86
89
  version_requirements: &id005 !ruby/object:Gem::Requirement
87
90
  none: false
88
91
  requirements:
89
92
  - - ">="
90
93
  - !ruby/object:Gem::Version
91
- hash: 49
94
+ hash: 1
92
95
  segments:
93
96
  - 0
94
- - 10
95
97
  - 3
96
- version: 0.10.3
98
+ - 9
99
+ version: 0.3.9
97
100
  requirement: *id005
98
101
  - !ruby/object:Gem::Dependency
99
- type: :runtime
102
+ type: :development
100
103
  prerelease: false
101
- name: rspec-rails
104
+ name: sqlite3-ruby
102
105
  version_requirements: &id006 !ruby/object:Gem::Requirement
103
106
  none: false
104
107
  requirements:
105
108
  - - ">="
106
109
  - !ruby/object:Gem::Version
107
- hash: 31098209
110
+ hash: 3
108
111
  segments:
109
- - 2
110
- - 0
111
112
  - 0
112
- - beta
113
- version: 2.0.0.beta
113
+ version: "0"
114
114
  requirement: *id006
115
115
  - !ruby/object:Gem::Dependency
116
116
  type: :development
@@ -247,7 +247,7 @@ extensions: []
247
247
 
248
248
  extra_rdoc_files:
249
249
  - LICENSE
250
- - README.rdoc
250
+ - README.markdown
251
251
  files:
252
252
  - .document
253
253
  - .gitignore
@@ -255,7 +255,7 @@ files:
255
255
  - Gemfile
256
256
  - Gemfile.lock
257
257
  - LICENSE
258
- - README.rdoc
258
+ - README.markdown
259
259
  - Rakefile
260
260
  - VERSION
261
261
  - app/controllers/houdini/postbacks_controller.rb
data/README.rdoc DELETED
@@ -1,3 +0,0 @@
1
- = HoudiniRails
2
-
3
- This project rocks and uses MIT-LICENSE.