acts_as_textcaptcha 2.2.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +66 -38
 - data/Rakefile +1 -1
 - data/acts_as_textcaptcha.gemspec +8 -7
 - data/lib/acts_as_textcaptcha/textcaptcha.rb +5 -3
 - data/lib/acts_as_textcaptcha/version.rb +1 -1
 - metadata +102 -92
 
    
        data/README.rdoc
    CHANGED
    
    | 
         @@ -8,59 +8,46 @@ The gem can be configured with your very own logic questions (to fall back on if 
     | 
|
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            Text CAPTCHA's logic questions are aimed at a child's age of 7, so can be solved easily by all but the most cognitively impaired users. As they involve human logic, such questions cannot be solved by a robot.  There are both advantages and disadvantages for using logic questions over image based captchas, {find out more at Text CAPTCHA}[http://textcaptcha.com/why].
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
            == Rails 3
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
            This gem is Rails 3 compatible.
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
11 
     | 
    
         
             
            == Demo
         
     | 
| 
       16 
12 
     | 
    
         | 
| 
       17 
13 
     | 
    
         
             
            Here's a {fully working demo on heroku}[http://textcaptcha.heroku.com]!
         
     | 
| 
       18 
14 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
            ==  
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
            What do you need?
         
     | 
| 
      
 15 
     | 
    
         
            +
            == Installing
         
     | 
| 
       22 
16 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
            * {Ruby}[http://ruby-lang.org/] >= 1.8.7 (also tested with REE and Ruby 1.9.2)                                                                                                                      
         
     | 
| 
       25 
     | 
    
         
            -
            * {bcrypt-ruby}[http://bcrypt-ruby.rubyforge.org/] gem (to securely encrypt the spam answers in your session)
         
     | 
| 
       26 
     | 
    
         
            -
            * {Text CAPTCHA api key}[http://textcaptcha.com/register] (_optional_, since you can define your own logic questions, see below for details)             
         
     | 
| 
       27 
     | 
    
         
            -
            * {Rspec2}[http://rspec.info/] (_optional_ if you want to run the tests, requires >= rspec2)
         
     | 
| 
       28 
     | 
    
         
            -
             
         
     | 
| 
       29 
     | 
    
         
            -
            == Installing            
         
     | 
| 
      
 17 
     | 
    
         
            +
            === Rails 3
         
     | 
| 
       30 
18 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
            Just add the following to your Gemfile, then run `bundle install`;
         
     | 
| 
       32 
20 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
              gem  
     | 
| 
      
 21 
     | 
    
         
            +
              gem 'acts_as_textcaptcha'
         
     | 
| 
       34 
22 
     | 
    
         | 
| 
      
 23 
     | 
    
         
            +
            === Rails 2.3.*
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            Add the following to your environment.rb file, then install with `gem install acts_as_textcaptcha`;
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              config.gem 'acts_as_textcaptcha'
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            === As a plugin
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
       35 
31 
     | 
    
         
             
            Or install as a plugin with
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       37 
33 
     | 
    
         
             
              rails plugin install git@github.com:matthutchinson/acts_as_textcaptcha.git
         
     | 
| 
       38 
34 
     | 
    
         
             
              OR
         
     | 
| 
       39 
35 
     | 
    
         
             
              script/plugin install git@github.com:matthutchinson/acts_as_textcaptcha.git
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
       41 
37 
     | 
    
         
             
            If you do decide to install this as a Rails plugin, you'll have to manually include the bcrypt-ruby gem in your Gemfile or environment config. Like so;
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
       43 
39 
     | 
    
         
             
              gem 'bcrypt-ruby', :require => 'bcrypt'
         
     | 
| 
       44 
40 
     | 
    
         
             
              OR
         
     | 
| 
       45 
41 
     | 
    
         
             
              config.gem 'bcrypt-ruby', :lib => 'bcrypt'
         
     | 
| 
       46 
     | 
    
         
            -
              
         
     | 
| 
       47 
     | 
    
         
            -
            == Using           
         
     | 
| 
       48 
     | 
    
         
            -
              
         
     | 
| 
       49 
     | 
    
         
            -
            First add the gem to your Gemfile
         
     | 
| 
       50 
42 
     | 
    
         | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                       
         
     | 
| 
       53 
     | 
    
         
            -
            OR add to your environment.rb config;
         
     | 
| 
      
 43 
     | 
    
         
            +
            == Setting up
         
     | 
| 
       54 
44 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
              
         
     | 
| 
       57 
     | 
    
         
            -
                                                                   
         
     | 
| 
       58 
     | 
    
         
            -
            Next configure your models to be spam protected; (this is the most basic way to configure the gem, with an api key only)
         
     | 
| 
      
 45 
     | 
    
         
            +
            Configure which models are to be spam protected; (this is the most basic way to configure the gem, with an api key only)
         
     | 
| 
       59 
46 
     | 
    
         | 
| 
       60 
47 
     | 
    
         
             
              class Comment < ActiveRecord::Base
         
     | 
| 
       61 
48 
     | 
    
         
             
                acts_as_textcaptcha({'api_key' => 'your_textcaptcha_api_key'})
         
     | 
| 
       62 
49 
     | 
    
         
             
              end          
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
       64 
51 
     | 
    
         
             
            Next in your controller *new* and *create* actions you'll want to _spamify_ your model and merge in the answers. Like so;
         
     | 
| 
       65 
52 
     | 
    
         | 
| 
       66 
53 
     | 
    
         
             
              def new
         
     | 
| 
         @@ -77,7 +64,7 @@ Next in your controller *new* and *create* actions you'll want to _spamify_ your 
     | 
|
| 
       77 
64 
     | 
    
         
             
                  render :action => 'new'
         
     | 
| 
       78 
65 
     | 
    
         
             
                end
         
     | 
| 
       79 
66 
     | 
    
         
             
              end       
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
       81 
68 
     | 
    
         
             
            Finally, in your form/view erb do something like the following;
         
     | 
| 
       82 
69 
     | 
    
         | 
| 
       83 
70 
     | 
    
         
             
              <%- if @comment.new_record? -%>
         
     | 
| 
         @@ -88,10 +75,10 @@ Finally, in your form/view erb do something like the following; 
     | 
|
| 
       88 
75 
     | 
    
         
             
                  <%= f.text_field :spam_answer, :value => '' %>
         
     | 
| 
       89 
76 
     | 
    
         
             
                <%- end -%>
         
     | 
| 
       90 
77 
     | 
    
         
             
              <%- end -%>
         
     | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
       92 
79 
     | 
    
         
             
            == More Configurations    
         
     | 
| 
       93 
80 
     | 
    
         | 
| 
       94 
     | 
    
         
            -
            You can also configure  
     | 
| 
      
 81 
     | 
    
         
            +
            You can also configure acts_as_textcaptcha in the following ways.
         
     | 
| 
       95 
82 
     | 
    
         | 
| 
       96 
83 
     | 
    
         
             
            === Hash
         
     | 
| 
       97 
84 
     | 
    
         | 
| 
         @@ -110,12 +97,21 @@ You can also configure spam protection in the following ways. 
     | 
|
| 
       110 
97 
     | 
    
         | 
| 
       111 
98 
     | 
    
         
             
            === YAML config
         
     | 
| 
       112 
99 
     | 
    
         | 
| 
       113 
     | 
    
         
            -
            All the above options can be expressed in a {textcaptcha.yml}[http://github.com/matthutchinson/acts_as_textcaptcha/raw/master/config/textcaptcha.yml] file. Drop this into your RAILS_ROOT/config folder.  
         
     | 
| 
      
 100 
     | 
    
         
            +
            All the above options can be expressed in a {textcaptcha.yml}[http://github.com/matthutchinson/acts_as_textcaptcha/raw/master/config/textcaptcha.yml] file. Drop this into your RAILS_ROOT/config folder.  The gem comes with a handy rake task to copy over a textcaptcha.yml template to your Rails config directory.
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            rake textcaptcha:generate_config
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            *NOTE:* If you are on Rails 2.3.*, you'll have to add the following to your Rakefile to make this task available;
         
     | 
| 
       114 
105 
     | 
    
         | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
      
 106 
     | 
    
         
            +
            `# load textcaptcha rake tasks
         
     | 
| 
      
 107 
     | 
    
         
            +
            Dir["#{Gem.searcher.find('acts_as_textcaptcha').full_gem_path}/lib/tasks/**/*.rake"].each { |ext| load ext } if Gem.searcher.find('acts_as_textcaptcha')`
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
            === Using _Without_ the Text CAPTCHA web service    
         
     | 
| 
       116 
111 
     | 
    
         | 
| 
       117 
112 
     | 
    
         
             
            It *also* is possible to configure to use only your own user defined logic questions.  To do so, just ommit the api_key and set at least 1 logic question in your options.
         
     | 
| 
       118 
113 
     | 
    
         | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
       119 
115 
     | 
    
         
             
            == What does the code do?  
         
     | 
| 
       120 
116 
     | 
    
         | 
| 
       121 
117 
     | 
    
         
             
            The gem contains two parts, a module for your ActiveRecord models, and a tiny helper method (spamify).
         
     | 
| 
         @@ -134,11 +130,43 @@ If the web service fails or no-api key is specified AND no alternate questions a 
     | 
|
| 
       134 
130 
     | 
    
         | 
| 
       135 
131 
     | 
    
         
             
            For more details on the code please check the {documentation}[http://rdoc.info/projects/matthutchinson/acts_as_textcaptcha].
         
     | 
| 
       136 
132 
     | 
    
         | 
| 
       137 
     | 
    
         
            -
            ==  
     | 
| 
      
 133 
     | 
    
         
            +
            == Translations
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
            Recent versions of the gem use standard Rails, I18n translation for the 2 possible error messages generated by acts_as_textcaptcha, with a fall-back to a default English error message.  Unfortunately in some versions of Rails 2.3.* the translation fall-back fails.  For this case (and when translating) the translations should be provided in your locale file with the following hierarchy (assuming your model is Comment);
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
              en:
         
     | 
| 
      
 138 
     | 
    
         
            +
                activerecord:
         
     | 
| 
      
 139 
     | 
    
         
            +
                  errors:
         
     | 
| 
      
 140 
     | 
    
         
            +
                    models:
         
     | 
| 
      
 141 
     | 
    
         
            +
                      comment:
         
     | 
| 
      
 142 
     | 
    
         
            +
                        disabled: "Sorry, adding a %{model} is currently disabled"
         
     | 
| 
      
 143 
     | 
    
         
            +
                        attributes:
         
     | 
| 
      
 144 
     | 
    
         
            +
                          spam_answer:
         
     | 
| 
      
 145 
     | 
    
         
            +
                            incorrect_answer: "is incorrect, try another question instead"
         
     | 
| 
      
 146 
     | 
    
         
            +
                activemodel:
         
     | 
| 
      
 147 
     | 
    
         
            +
                  attributes:
         
     | 
| 
      
 148 
     | 
    
         
            +
                    comment:
         
     | 
| 
      
 149 
     | 
    
         
            +
                      spam_answer: "Spam answer"
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
            It should be noted that currently the textcaptcha API service only offers logic questions in English.
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
            == Testing and docs
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
            In development you can run the specs and rdoc tasks like so;
         
     | 
| 
       138 
156 
     | 
    
         | 
| 
       139 
157 
     | 
    
         
             
            * rake spec (run the rspec2 tests)
         
     | 
| 
       140 
158 
     | 
    
         
             
            * rake rdoc (generate docs)
         
     | 
| 
       141 
159 
     | 
    
         | 
| 
      
 160 
     | 
    
         
            +
            == Requirements
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
            What do you need?
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
            * {Rails}[http://github.com/rails/rails] >= 2.3.2  (including Rails 3)
         
     | 
| 
      
 165 
     | 
    
         
            +
            * {Ruby}[http://ruby-lang.org/] >= 1.8.7 (also tested with REE and Ruby 1.9.2)                                                                                                                      
         
     | 
| 
      
 166 
     | 
    
         
            +
            * {bcrypt-ruby}[http://bcrypt-ruby.rubyforge.org/] gem (to securely encrypt the spam answers in your session)
         
     | 
| 
      
 167 
     | 
    
         
            +
            * {Text CAPTCHA api key}[http://textcaptcha.com/register] (_optional_, since you can define your own logic questions, see below for details)             
         
     | 
| 
      
 168 
     | 
    
         
            +
            * {Rspec2}[http://rspec.info/] (_optional_ if you want to run the tests, requires >= rspec2)
         
     | 
| 
      
 169 
     | 
    
         
            +
             
     | 
| 
       142 
170 
     | 
    
         
             
            == Links
         
     | 
| 
       143 
171 
     | 
    
         | 
| 
       144 
172 
     | 
    
         
             
            * {Documentation}[http://rdoc.info/projects/matthutchinson/acts_as_textcaptcha]
         
     | 
| 
         @@ -157,7 +185,7 @@ For more details on the code please check the {documentation}[http://rdoc.info/p 
     | 
|
| 
       157 
185 
     | 
    
         | 
| 
       158 
186 
     | 
    
         
             
            == Todo
         
     | 
| 
       159 
187 
     | 
    
         | 
| 
       160 
     | 
    
         
            -
            *  
     | 
| 
      
 188 
     | 
    
         
            +
            * Fix issue with multiple forms open in the same session
         
     | 
| 
       161 
189 
     | 
    
         | 
| 
       162 
190 
     | 
    
         
             
            == Usage
         
     | 
| 
       163 
191 
     | 
    
         | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/acts_as_textcaptcha.gemspec
    CHANGED
    
    | 
         @@ -20,13 +20,14 @@ Gem::Specification.new do |s| 
     | 
|
| 
       20 
20 
     | 
    
         
             
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         
     | 
| 
       21 
21 
     | 
    
         
             
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         
     | 
| 
       22 
22 
     | 
    
         
             
              s.require_paths = ["lib"]
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
              s.add_dependency('rails')
         
     | 
| 
       25 
     | 
    
         
            -
              s.add_dependency('activerecord')
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
       26 
24 
     | 
    
         
             
              s.add_dependency('bcrypt-ruby', '~> 2.1.2')
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              s.add_development_dependency(' 
     | 
| 
       29 
     | 
    
         
            -
              s.add_development_dependency(' 
     | 
| 
       30 
     | 
    
         
            -
              s.add_development_dependency(' 
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              s.add_development_dependency('rails')
         
     | 
| 
      
 27 
     | 
    
         
            +
              s.add_development_dependency('activerecord')
         
     | 
| 
      
 28 
     | 
    
         
            +
              s.add_development_dependency('bundler')
         
     | 
| 
      
 29 
     | 
    
         
            +
              s.add_development_dependency('rspec')
         
     | 
| 
      
 30 
     | 
    
         
            +
              s.add_development_dependency('rcov')
         
     | 
| 
      
 31 
     | 
    
         
            +
              s.add_development_dependency('rdoc')
         
     | 
| 
       31 
32 
     | 
    
         
             
              s.add_development_dependency('sqlite3')
         
     | 
| 
       32 
33 
     | 
    
         
             
            end
         
     | 
| 
         @@ -16,9 +16,11 @@ end 
     | 
|
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
            module ActsAsTextcaptcha
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
               
     | 
| 
       20 
     | 
    
         
            -
                 
     | 
| 
       21 
     | 
    
         
            -
                   
     | 
| 
      
 19 
     | 
    
         
            +
              if Rails.version =~ /^3\./
         
     | 
| 
      
 20 
     | 
    
         
            +
                class Railtie < ::Rails::Railtie
         
     | 
| 
      
 21 
     | 
    
         
            +
                  rake_tasks do
         
     | 
| 
      
 22 
     | 
    
         
            +
                    load "tasks/textcaptcha.rake"
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
       22 
24 
     | 
    
         
             
                end
         
     | 
| 
       23 
25 
     | 
    
         
             
              end
         
     | 
| 
       24 
26 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,108 +1,119 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            --- !ruby/object:Gem::Specification 
     | 
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: acts_as_textcaptcha
         
     | 
| 
       3 
     | 
    
         
            -
            version: !ruby/object:Gem::Version 
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.2.2
         
     | 
| 
       4 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       5 
     | 
    
         
            -
              version: 2.2.1
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
     | 
    
         
            -
            authors: 
     | 
| 
      
 7 
     | 
    
         
            +
            authors:
         
     | 
| 
       8 
8 
     | 
    
         
             
            - Matthew Hutchinson
         
     | 
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            dependencies: 
     | 
| 
       15 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
     | 
| 
       16 
     | 
    
         
            -
              name:  
     | 
| 
       17 
     | 
    
         
            -
               
     | 
| 
       18 
     | 
    
         
            -
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2011-07-26 00:00:00.000000000 +01:00
         
     | 
| 
      
 13 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 14 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 15 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 16 
     | 
    
         
            +
              name: bcrypt-ruby
         
     | 
| 
      
 17 
     | 
    
         
            +
              requirement: &2152243920 !ruby/object:Gem::Requirement
         
     | 
| 
       19 
18 
     | 
    
         
             
                none: false
         
     | 
| 
       20 
     | 
    
         
            -
                requirements: 
     | 
| 
       21 
     | 
    
         
            -
                - -  
     | 
| 
       22 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
     | 
| 
       23 
     | 
    
         
            -
                    version:  
     | 
| 
      
 19 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 20 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 21 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 22 
     | 
    
         
            +
                    version: 2.1.2
         
     | 
| 
       24 
23 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       25 
     | 
    
         
            -
              version_requirements: *id001
         
     | 
| 
       26 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       27 
     | 
    
         
            -
              name: activerecord
         
     | 
| 
       28 
24 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       29 
     | 
    
         
            -
               
     | 
| 
      
 25 
     | 
    
         
            +
              version_requirements: *2152243920
         
     | 
| 
      
 26 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 27 
     | 
    
         
            +
              name: rails
         
     | 
| 
      
 28 
     | 
    
         
            +
              requirement: &2152243500 !ruby/object:Gem::Requirement
         
     | 
| 
       30 
29 
     | 
    
         
             
                none: false
         
     | 
| 
       31 
     | 
    
         
            -
                requirements: 
     | 
| 
       32 
     | 
    
         
            -
                - -  
     | 
| 
       33 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
     | 
| 
       34 
     | 
    
         
            -
                    version:  
     | 
| 
       35 
     | 
    
         
            -
              type: : 
     | 
| 
       36 
     | 
    
         
            -
              version_requirements: *id002
         
     | 
| 
       37 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       38 
     | 
    
         
            -
              name: bcrypt-ruby
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :development
         
     | 
| 
       39 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       40 
     | 
    
         
            -
               
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: *2152243500
         
     | 
| 
      
 37 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 38 
     | 
    
         
            +
              name: activerecord
         
     | 
| 
      
 39 
     | 
    
         
            +
              requirement: &2152243040 !ruby/object:Gem::Requirement
         
     | 
| 
       41 
40 
     | 
    
         
             
                none: false
         
     | 
| 
       42 
     | 
    
         
            -
                requirements: 
     | 
| 
       43 
     | 
    
         
            -
                - -  
     | 
| 
       44 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
     | 
| 
       45 
     | 
    
         
            -
                    version:  
     | 
| 
       46 
     | 
    
         
            -
              type: : 
     | 
| 
       47 
     | 
    
         
            -
              version_requirements: *id003
         
     | 
| 
       48 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       49 
     | 
    
         
            -
              name: rspec
         
     | 
| 
      
 41 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 42 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 43 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 44 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 45 
     | 
    
         
            +
              type: :development
         
     | 
| 
       50 
46 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       51 
     | 
    
         
            -
               
     | 
| 
      
 47 
     | 
    
         
            +
              version_requirements: *2152243040
         
     | 
| 
      
 48 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 49 
     | 
    
         
            +
              name: bundler
         
     | 
| 
      
 50 
     | 
    
         
            +
              requirement: &2152242620 !ruby/object:Gem::Requirement
         
     | 
| 
       52 
51 
     | 
    
         
             
                none: false
         
     | 
| 
       53 
     | 
    
         
            -
                requirements: 
     | 
| 
       54 
     | 
    
         
            -
                - -  
     | 
| 
       55 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
     | 
| 
       56 
     | 
    
         
            -
                    version:  
     | 
| 
      
 52 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 53 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 54 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 55 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       57 
56 
     | 
    
         
             
              type: :development
         
     | 
| 
       58 
     | 
    
         
            -
              version_requirements: *id004
         
     | 
| 
       59 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       60 
     | 
    
         
            -
              name: rcov
         
     | 
| 
       61 
57 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       62 
     | 
    
         
            -
               
     | 
| 
      
 58 
     | 
    
         
            +
              version_requirements: *2152242620
         
     | 
| 
      
 59 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 60 
     | 
    
         
            +
              name: rspec
         
     | 
| 
      
 61 
     | 
    
         
            +
              requirement: &2152242200 !ruby/object:Gem::Requirement
         
     | 
| 
       63 
62 
     | 
    
         
             
                none: false
         
     | 
| 
       64 
     | 
    
         
            -
                requirements: 
     | 
| 
       65 
     | 
    
         
            -
                - -  
     | 
| 
       66 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
     | 
| 
       67 
     | 
    
         
            -
                    version: 0 
     | 
| 
      
 63 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 64 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 65 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 66 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       68 
67 
     | 
    
         
             
              type: :development
         
     | 
| 
       69 
     | 
    
         
            -
              version_requirements: *id005
         
     | 
| 
       70 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       71 
     | 
    
         
            -
              name: rdoc
         
     | 
| 
       72 
68 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       73 
     | 
    
         
            -
               
     | 
| 
      
 69 
     | 
    
         
            +
              version_requirements: *2152242200
         
     | 
| 
      
 70 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 71 
     | 
    
         
            +
              name: rcov
         
     | 
| 
      
 72 
     | 
    
         
            +
              requirement: &2152241780 !ruby/object:Gem::Requirement
         
     | 
| 
       74 
73 
     | 
    
         
             
                none: false
         
     | 
| 
       75 
     | 
    
         
            -
                requirements: 
     | 
| 
       76 
     | 
    
         
            -
                - -  
     | 
| 
       77 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
     | 
| 
       78 
     | 
    
         
            -
                    version:  
     | 
| 
      
 74 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 75 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 76 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 77 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       79 
78 
     | 
    
         
             
              type: :development
         
     | 
| 
       80 
     | 
    
         
            -
              version_requirements: *id006
         
     | 
| 
       81 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       82 
     | 
    
         
            -
              name: sqlite3
         
     | 
| 
       83 
79 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       84 
     | 
    
         
            -
               
     | 
| 
      
 80 
     | 
    
         
            +
              version_requirements: *2152241780
         
     | 
| 
      
 81 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 82 
     | 
    
         
            +
              name: rdoc
         
     | 
| 
      
 83 
     | 
    
         
            +
              requirement: &2152241360 !ruby/object:Gem::Requirement
         
     | 
| 
       85 
84 
     | 
    
         
             
                none: false
         
     | 
| 
       86 
     | 
    
         
            -
                requirements: 
     | 
| 
       87 
     | 
    
         
            -
                - -  
     | 
| 
       88 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
     | 
| 
       89 
     | 
    
         
            -
                    version:  
     | 
| 
      
 85 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 86 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 87 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 88 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       90 
89 
     | 
    
         
             
              type: :development
         
     | 
| 
       91 
     | 
    
         
            -
               
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
      
 90 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 91 
     | 
    
         
            +
              version_requirements: *2152241360
         
     | 
| 
      
 92 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 93 
     | 
    
         
            +
              name: sqlite3
         
     | 
| 
      
 94 
     | 
    
         
            +
              requirement: &2152240940 !ruby/object:Gem::Requirement
         
     | 
| 
      
 95 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 96 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 97 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 98 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 99 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 100 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 101 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 102 
     | 
    
         
            +
              version_requirements: *2152240940
         
     | 
| 
      
 103 
     | 
    
         
            +
            description: ! "Spam protection for your ActiveRecord models using logic questions
         
     | 
| 
      
 104 
     | 
    
         
            +
              and the excellent textcaptcha api. See textcaptcha.com for more details and to get
         
     | 
| 
      
 105 
     | 
    
         
            +
              your api key.\n  The logic questions are aimed at a child's age of 7, so can be
         
     | 
| 
      
 106 
     | 
    
         
            +
              solved easily by all but the most cognitively impaired users. As they involve human
         
     | 
| 
      
 107 
     | 
    
         
            +
              logic, such questions cannot be solved by a robot.\n  For more reasons on why logic
         
     | 
| 
      
 108 
     | 
    
         
            +
              questions are useful, see here; http://textcaptcha.com/why"
         
     | 
| 
      
 109 
     | 
    
         
            +
            email:
         
     | 
| 
       97 
110 
     | 
    
         
             
            - matt@hiddenloop.com
         
     | 
| 
       98 
111 
     | 
    
         
             
            executables: []
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
112 
     | 
    
         
             
            extensions: []
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
            extra_rdoc_files: 
         
     | 
| 
      
 113 
     | 
    
         
            +
            extra_rdoc_files:
         
     | 
| 
       103 
114 
     | 
    
         
             
            - README.rdoc
         
     | 
| 
       104 
115 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       105 
     | 
    
         
            -
            files: 
     | 
| 
      
 116 
     | 
    
         
            +
            files:
         
     | 
| 
       106 
117 
     | 
    
         
             
            - .gitignore
         
     | 
| 
       107 
118 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       108 
119 
     | 
    
         
             
            - LICENSE
         
     | 
| 
         @@ -123,34 +134,33 @@ files: 
     | 
|
| 
       123 
134 
     | 
    
         
             
            - spec/schema.rb
         
     | 
| 
       124 
135 
     | 
    
         
             
            - spec/spec.opts
         
     | 
| 
       125 
136 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
      
 137 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
       126 
138 
     | 
    
         
             
            homepage: http://github.com/matthutchinson/acts_as_textcaptcha
         
     | 
| 
       127 
139 
     | 
    
         
             
            licenses: []
         
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
140 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       130 
141 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       131 
     | 
    
         
            -
             
     | 
| 
       132 
     | 
    
         
            -
            require_paths: 
         
     | 
| 
      
 142 
     | 
    
         
            +
            require_paths:
         
     | 
| 
       133 
143 
     | 
    
         
             
            - lib
         
     | 
| 
       134 
     | 
    
         
            -
            required_ruby_version: !ruby/object:Gem::Requirement 
     | 
| 
      
 144 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
       135 
145 
     | 
    
         
             
              none: false
         
     | 
| 
       136 
     | 
    
         
            -
              requirements: 
     | 
| 
       137 
     | 
    
         
            -
              - -  
     | 
| 
       138 
     | 
    
         
            -
                - !ruby/object:Gem::Version 
     | 
| 
       139 
     | 
    
         
            -
                  version:  
     | 
| 
       140 
     | 
    
         
            -
            required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
| 
      
 146 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 147 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 148 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 149 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 150 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       141 
151 
     | 
    
         
             
              none: false
         
     | 
| 
       142 
     | 
    
         
            -
              requirements: 
     | 
| 
       143 
     | 
    
         
            -
              - -  
     | 
| 
       144 
     | 
    
         
            -
                - !ruby/object:Gem::Version 
     | 
| 
       145 
     | 
    
         
            -
                  version:  
     | 
| 
      
 152 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 153 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 154 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 155 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
       146 
156 
     | 
    
         
             
            requirements: []
         
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
       148 
157 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       149 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 158 
     | 
    
         
            +
            rubygems_version: 1.6.2
         
     | 
| 
       150 
159 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       151 
160 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       152 
     | 
    
         
            -
            summary: Spam protection for your models via logic questions and the excellent textcaptcha.com 
     | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
      
 161 
     | 
    
         
            +
            summary: Spam protection for your models via logic questions and the excellent textcaptcha.com
         
     | 
| 
      
 162 
     | 
    
         
            +
              api
         
     | 
| 
      
 163 
     | 
    
         
            +
            test_files:
         
     | 
| 
       154 
164 
     | 
    
         
             
            - spec/acts_as_textcaptcha_spec.rb
         
     | 
| 
       155 
165 
     | 
    
         
             
            - spec/database.yml
         
     | 
| 
       156 
166 
     | 
    
         
             
            - spec/schema.rb
         
     |