Skip to content

Repository files navigation

SimpleCaptcha2

Build StatusGem Version

SimpleCaptcha(2) is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. SimpleCaptcha2 is available to be used with Rails 3 + 4. This is a fork of the popular Rubygem simple_captcha which got abandoned.

Features

  • Zero FileSystem usage (secret code moved to db-store and image storage removed).
  • Provides various image styles.
  • Provides three level of complexity of images.
  • Works absolutely fine in distributed environment(session and db based implementation works fine in distributed environment).
  • Implementation is as easy as just writing a single line in your view. <%= show_simple_captcha %> within the 'form' tags.
  • Flexible DOM and CSS handling(There is a separate view partial for rendering SimpleCaptcha DOM elements).
  • Automated removal of 1 hour old unmatched simple_captcha data.

Requirements

Installation

You might need to install Ghostscript on a Mac-System or a Debian-System:

brew install ghostscript
apt-get install ghostscript

The default font, that imagemagick uses is Arial. Make sure that font is available (apt install ttf-mscorefonts-installer) or change the font in the SimpleCaptcha config.

Put this into your Gemfile

gem'simple_captcha2',require: 'simple_captcha'

and run bundle install.

Setup

After installation, follow these simple steps to setup the plugin. The setup will depend on the version of rails your application is using.

rails generate simple_captcha [template_format] # Available options erb, haml. Default: erb
rake db:migrate # Mongoid: skip this step and remove the migration

Usage

There are two usage scenarios:

Controller Based

Add the following line in the file "app/controllers/application.rb"

ApplicationController < ActionController::BaseincludeSimpleCaptcha::ControllerHelpersend

In the view file within the form tags add this code

<%= show_simple_captcha %>

and in the controller's action authenticate it as

ifsimple_captcha_valid?dothiselsedothatend

Model Based

This is suggested, if you want to integrate the error message into the normal form validation flow.

In the view file within the form tags write this code

<%= show_simple_captcha(:object=>"user") %>

and in the model class add this code

classUser < ActiveRecord::Baseapply_simple_captchaend

Mongoid:

classUserincludeSimpleCaptcha::ModelHelpersapply_simple_captchaend

Strong parameters (Rails 4.x)

Must add them:

:captcha,:captcha_key

Form-Builder helper

<%= form_for @user do |form| -%>
...
<%= form.simple_captcha :label => "Enter numbers.." %>
...
<% end -%>

Validating with captcha

NOTE: @user.valid? will still work as it should, it will not validate the captcha code.

@user.valid_with_captcha?

Saving with captcha

NOTE: @user.save will still work as it should, it will not validate the captcha code.

@user.save_with_captcha

Formtastic integration

SimpleCaptcha detects if you are using Formtastic:

<%= form.input :captcha, :as => :simple_captcha %>

Tests

You can make the Captcha always pass with a initializer file: config/initializers/simple_captcha.rb

SimpleCaptcha.always_pass=Rails.env.test?

You can also ask for the value, e.g. Acceptance Tests/Features:

visit'/pages/form_tag'assert_equal1,SimpleCaptcha::SimpleCaptchaData.countfill_in'captcha',with: SimpleCaptcha::SimpleCaptchaData.first.value

ORM support

simple-captcha2 supports 3 type of ORM: ActiveRecord, Sequel and Mongoid.

Selection of ORM is base on loaded classes. If ActiveRecord is loaded then it will be used for the simple captcha data model. If ActiveRecord is undefined, Sequel presence is tested. If Sequel is defined it will used for the simple captcha data model. If not, Mongoid is used.

For instance if your application is using Sequel as an ORM just make sure you require sequel-rails gem before simple-captcha2 in your Gemfile and respective model will be selected automatically.

Options & Examples

View Options

  • :label - provides the custom text b/w the image and the text field, the default is "type the code from the image"
  • :object - the name of the object of the model class, to implement the model based captcha.
  • :code_type - return numeric only if set to 'numeric'
  • :multiple - allow to use the same captcha in multiple forms in one page. True for the first appaerance and false for the rest.

Global options

  • :image_style - provides the specific image style for the captcha image. There are eight different styles available with the plugin as...
  1. simply_blue
  2. simply_red
  3. simply_green
  4. charcoal_grey
  5. embosed_silver
  6. all_black
  7. distorted_black
  8. almost_invisible

Default style is 'simply_blue'. You can also specify 'random' to select the random image style.

  • :distortion - handles the complexity of the image. The :distortion can be set to 'low', 'medium' or 'high'. Default is 'low'.

  • :implode - handles the complexity of the image. The :implode can be set to 'none', 'low', 'medium' or 'high'. Default is 'medium'.

Create "./config/initializers/simple_captcha.rb"

SimpleCaptcha.setupdo |sc|
# default: 100x28sc.image_size='120x40'# default: 5sc.length=6# default: simply_blue# possible values:# 'embosed_silver',# 'simply_red',# 'simply_green',# 'simply_blue',# 'distorted_black',# 'all_black',# 'charcoal_grey',# 'almost_invisible'# 'random'sc.image_style='simply_green'# default: low# possible values: 'low', 'medium', 'high', 'random'sc.distortion='medium'# default: medium# possible values: 'none', 'low', 'medium', 'high'sc.implode='low'end

You can add your own style:

SimpleCaptcha.setupdo |sc|
sc.image_style='mycaptha'sc.add_image_style('mycaptha',["-background '#F4F7F8'","-fill '#86818B'","-border 1","-bordercolor '#E0E2E3'"])end

You can provide the path where image_magick is installed as well:

SimpleCaptcha.setupdo |sc|
sc.image_magick_path='/usr/bin'# you can check this from console by running: which convertend

You can setup in which format the reload of the captcha is executed:

SimpleCaptcha.setupdo |sc|
sc.refresh_format=:prototype# or :jquery, or :plain_javascript default is :jqueryend

If needed, you can explicitly state the font used for generating the captcha:

SimpleCaptcha.setupdo |sc|
sc.font="DejaVu-Sans"end

How to change the CSS for SimpleCaptcha DOM elements?

You can change the CSS of the SimpleCaptcha DOM elements as per your need in this file.

app/views/simple_captcha/_simple_captcha.erb

View's Examples

Controller Based Example

<%= show_simple_captcha %><%= show_simple_captcha(:label => "human authentication") %>

Model Based Example

<%= show_simple_captcha(:object => 'user', :label => "human authentication") %>

Model Options

  • :message - provides the custom message on failure of captcha authentication the default is "Secret Code did not match with the Image"

  • :add_to_base - if set to true, appends the error message to the base.

Model's Example
classUser < ActiveRecord::Baseapply_simple_captchaendclassUser < ActiveRecord::Baseapply_simple_captcha:message=>"The secret Image and code were different",:add_to_base=>trueend

I18n

en:
simple_captcha:
placeholder: "Enter the image value"label: "Enter the code in the box:"refresh_button_text: "Refresh"message:
default: "Secret Code did not match with the Image"user: "The secret Image and code were different"

Contributing

For testing, generate a temporary Rails dummy app inside test:

bundle
bundle exec rake dummy:setup
bundle exec rake app:db:migrate
bundle exec rake app:db:migrate RAILS_ENV=test
bundle exec rake test

Please add test cases when adding new functionality. I started with some basic example integration tests for a very basic coverage.

The tests will be run on Travis-CI.

Who's who?

Enjoy the simplest captcha implementation.

Original Author of the Version for Rails 2: Author: Sur, Blog: http://expressica.com, Contact: sur.max@gmail.com Plugin Homepage: http://expressica.com/simple_captcha

Plugin update for rails 3: http://github.com/galetahub

update for Rails 4, tests and forked by Stefan Wienert (pludoni GmbH)

About

Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models.

Topics

Resources

Stars

105 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - pludoni/simple-captcha: Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. · GitHub
Skip to content

Repository files navigation

SimpleCaptcha2

Build StatusGem Version

SimpleCaptcha(2) is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. SimpleCaptcha2 is available to be used with Rails 3 + 4. This is a fork of the popular Rubygem simple_captcha which got abandoned.

Features

  • Zero FileSystem usage (secret code moved to db-store and image storage removed).
  • Provides various image styles.
  • Provides three level of complexity of images.
  • Works absolutely fine in distributed environment(session and db based implementation works fine in distributed environment).
  • Implementation is as easy as just writing a single line in your view. <%= show_simple_captcha %> within the 'form' tags.
  • Flexible DOM and CSS handling(There is a separate view partial for rendering SimpleCaptcha DOM elements).
  • Automated removal of 1 hour old unmatched simple_captcha data.

Requirements

Installation

You might need to install Ghostscript on a Mac-System or a Debian-System:

brew install ghostscript
apt-get install ghostscript

The default font, that imagemagick uses is Arial. Make sure that font is available (apt install ttf-mscorefonts-installer) or change the font in the SimpleCaptcha config.

Put this into your Gemfile

gem'simple_captcha2',require: 'simple_captcha'

and run bundle install.

Setup

After installation, follow these simple steps to setup the plugin. The setup will depend on the version of rails your application is using.

rails generate simple_captcha [template_format] # Available options erb, haml. Default: erb
rake db:migrate # Mongoid: skip this step and remove the migration

Usage

There are two usage scenarios:

Controller Based

Add the following line in the file "app/controllers/application.rb"

ApplicationController < ActionController::BaseincludeSimpleCaptcha::ControllerHelpersend

In the view file within the form tags add this code

<%= show_simple_captcha %>

and in the controller's action authenticate it as

ifsimple_captcha_valid?dothiselsedothatend

Model Based

This is suggested, if you want to integrate the error message into the normal form validation flow.

In the view file within the form tags write this code

<%= show_simple_captcha(:object=>"user") %>

and in the model class add this code

classUser < ActiveRecord::Baseapply_simple_captchaend

Mongoid:

classUserincludeSimpleCaptcha::ModelHelpersapply_simple_captchaend

Strong parameters (Rails 4.x)

Must add them:

:captcha,:captcha_key

Form-Builder helper

<%= form_for @user do |form| -%>
...
<%= form.simple_captcha :label => "Enter numbers.." %>
...
<% end -%>

Validating with captcha

NOTE: @user.valid? will still work as it should, it will not validate the captcha code.

@user.valid_with_captcha?

Saving with captcha

NOTE: @user.save will still work as it should, it will not validate the captcha code.

@user.save_with_captcha

Formtastic integration

SimpleCaptcha detects if you are using Formtastic:

<%= form.input :captcha, :as => :simple_captcha %>

Tests

You can make the Captcha always pass with a initializer file: config/initializers/simple_captcha.rb

SimpleCaptcha.always_pass=Rails.env.test?

You can also ask for the value, e.g. Acceptance Tests/Features:

visit'/pages/form_tag'assert_equal1,SimpleCaptcha::SimpleCaptchaData.countfill_in'captcha',with: SimpleCaptcha::SimpleCaptchaData.first.value

ORM support

simple-captcha2 supports 3 type of ORM: ActiveRecord, Sequel and Mongoid.

Selection of ORM is base on loaded classes. If ActiveRecord is loaded then it will be used for the simple captcha data model. If ActiveRecord is undefined, Sequel presence is tested. If Sequel is defined it will used for the simple captcha data model. If not, Mongoid is used.

For instance if your application is using Sequel as an ORM just make sure you require sequel-rails gem before simple-captcha2 in your Gemfile and respective model will be selected automatically.

Options & Examples

View Options

  • :label - provides the custom text b/w the image and the text field, the default is "type the code from the image"
  • :object - the name of the object of the model class, to implement the model based captcha.
  • :code_type - return numeric only if set to 'numeric'
  • :multiple - allow to use the same captcha in multiple forms in one page. True for the first appaerance and false for the rest.

Global options

  • :image_style - provides the specific image style for the captcha image. There are eight different styles available with the plugin as...
  1. simply_blue
  2. simply_red
  3. simply_green
  4. charcoal_grey
  5. embosed_silver
  6. all_black
  7. distorted_black
  8. almost_invisible

Default style is 'simply_blue'. You can also specify 'random' to select the random image style.

  • :distortion - handles the complexity of the image. The :distortion can be set to 'low', 'medium' or 'high'. Default is 'low'.

  • :implode - handles the complexity of the image. The :implode can be set to 'none', 'low', 'medium' or 'high'. Default is 'medium'.

Create "./config/initializers/simple_captcha.rb"

SimpleCaptcha.setupdo |sc|
# default: 100x28sc.image_size='120x40'# default: 5sc.length=6# default: simply_blue# possible values:# 'embosed_silver',# 'simply_red',# 'simply_green',# 'simply_blue',# 'distorted_black',# 'all_black',# 'charcoal_grey',# 'almost_invisible'# 'random'sc.image_style='simply_green'# default: low# possible values: 'low', 'medium', 'high', 'random'sc.distortion='medium'# default: medium# possible values: 'none', 'low', 'medium', 'high'sc.implode='low'end

You can add your own style:

SimpleCaptcha.setupdo |sc|
sc.image_style='mycaptha'sc.add_image_style('mycaptha',["-background '#F4F7F8'","-fill '#86818B'","-border 1","-bordercolor '#E0E2E3'"])end

You can provide the path where image_magick is installed as well:

SimpleCaptcha.setupdo |sc|
sc.image_magick_path='/usr/bin'# you can check this from console by running: which convertend

You can setup in which format the reload of the captcha is executed:

SimpleCaptcha.setupdo |sc|
sc.refresh_format=:prototype# or :jquery, or :plain_javascript default is :jqueryend

If needed, you can explicitly state the font used for generating the captcha:

SimpleCaptcha.setupdo |sc|
sc.font="DejaVu-Sans"end

How to change the CSS for SimpleCaptcha DOM elements?

You can change the CSS of the SimpleCaptcha DOM elements as per your need in this file.

app/views/simple_captcha/_simple_captcha.erb

View's Examples

Controller Based Example

<%= show_simple_captcha %><%= show_simple_captcha(:label => "human authentication") %>

Model Based Example

<%= show_simple_captcha(:object => 'user', :label => "human authentication") %>

Model Options

  • :message - provides the custom message on failure of captcha authentication the default is "Secret Code did not match with the Image"

  • :add_to_base - if set to true, appends the error message to the base.

Model's Example
classUser < ActiveRecord::Baseapply_simple_captchaendclassUser < ActiveRecord::Baseapply_simple_captcha:message=>"The secret Image and code were different",:add_to_base=>trueend

I18n

en:
simple_captcha:
placeholder: "Enter the image value"label: "Enter the code in the box:"refresh_button_text: "Refresh"message:
default: "Secret Code did not match with the Image"user: "The secret Image and code were different"

Contributing

For testing, generate a temporary Rails dummy app inside test:

bundle
bundle exec rake dummy:setup
bundle exec rake app:db:migrate
bundle exec rake app:db:migrate RAILS_ENV=test
bundle exec rake test

Please add test cases when adding new functionality. I started with some basic example integration tests for a very basic coverage.

The tests will be run on Travis-CI.

Who's who?

Enjoy the simplest captcha implementation.

Original Author of the Version for Rails 2: Author: Sur, Blog: http://expressica.com, Contact: sur.max@gmail.com Plugin Homepage: http://expressica.com/simple_captcha

Plugin update for rails 3: http://github.com/galetahub

update for Rails 4, tests and forked by Stefan Wienert (pludoni GmbH)

About

Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models.

Topics

Resources

Stars

105 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - pludoni/simple-captcha: Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. · GitHub
Skip to content

Repository files navigation

SimpleCaptcha2

Build StatusGem Version

SimpleCaptcha(2) is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. SimpleCaptcha2 is available to be used with Rails 3 + 4. This is a fork of the popular Rubygem simple_captcha which got abandoned.

Features

  • Zero FileSystem usage (secret code moved to db-store and image storage removed).
  • Provides various image styles.
  • Provides three level of complexity of images.
  • Works absolutely fine in distributed environment(session and db based implementation works fine in distributed environment).
  • Implementation is as easy as just writing a single line in your view. <%= show_simple_captcha %> within the 'form' tags.
  • Flexible DOM and CSS handling(There is a separate view partial for rendering SimpleCaptcha DOM elements).
  • Automated removal of 1 hour old unmatched simple_captcha data.

Requirements

Installation

You might need to install Ghostscript on a Mac-System or a Debian-System:

brew install ghostscript
apt-get install ghostscript

The default font, that imagemagick uses is Arial. Make sure that font is available (apt install ttf-mscorefonts-installer) or change the font in the SimpleCaptcha config.

Put this into your Gemfile

gem'simple_captcha2',require: 'simple_captcha'

and run bundle install.

Setup

After installation, follow these simple steps to setup the plugin. The setup will depend on the version of rails your application is using.

rails generate simple_captcha [template_format] # Available options erb, haml. Default: erb
rake db:migrate # Mongoid: skip this step and remove the migration

Usage

There are two usage scenarios:

Controller Based

Add the following line in the file "app/controllers/application.rb"

ApplicationController < ActionController::BaseincludeSimpleCaptcha::ControllerHelpersend

In the view file within the form tags add this code

<%= show_simple_captcha %>

and in the controller's action authenticate it as

ifsimple_captcha_valid?dothiselsedothatend

Model Based

This is suggested, if you want to integrate the error message into the normal form validation flow.

In the view file within the form tags write this code

<%= show_simple_captcha(:object=>"user") %>

and in the model class add this code

classUser < ActiveRecord::Baseapply_simple_captchaend

Mongoid:

classUserincludeSimpleCaptcha::ModelHelpersapply_simple_captchaend

Strong parameters (Rails 4.x)

Must add them:

:captcha,:captcha_key

Form-Builder helper

<%= form_for @user do |form| -%>
...
<%= form.simple_captcha :label => "Enter numbers.." %>
...
<% end -%>

Validating with captcha

NOTE: @user.valid? will still work as it should, it will not validate the captcha code.

@user.valid_with_captcha?

Saving with captcha

NOTE: @user.save will still work as it should, it will not validate the captcha code.

@user.save_with_captcha

Formtastic integration

SimpleCaptcha detects if you are using Formtastic:

<%= form.input :captcha, :as => :simple_captcha %>

Tests

You can make the Captcha always pass with a initializer file: config/initializers/simple_captcha.rb

SimpleCaptcha.always_pass=Rails.env.test?

You can also ask for the value, e.g. Acceptance Tests/Features:

visit'/pages/form_tag'assert_equal1,SimpleCaptcha::SimpleCaptchaData.countfill_in'captcha',with: SimpleCaptcha::SimpleCaptchaData.first.value

ORM support

simple-captcha2 supports 3 type of ORM: ActiveRecord, Sequel and Mongoid.

Selection of ORM is base on loaded classes. If ActiveRecord is loaded then it will be used for the simple captcha data model. If ActiveRecord is undefined, Sequel presence is tested. If Sequel is defined it will used for the simple captcha data model. If not, Mongoid is used.

For instance if your application is using Sequel as an ORM just make sure you require sequel-rails gem before simple-captcha2 in your Gemfile and respective model will be selected automatically.

Options & Examples

View Options

  • :label - provides the custom text b/w the image and the text field, the default is "type the code from the image"
  • :object - the name of the object of the model class, to implement the model based captcha.
  • :code_type - return numeric only if set to 'numeric'
  • :multiple - allow to use the same captcha in multiple forms in one page. True for the first appaerance and false for the rest.

Global options

  • :image_style - provides the specific image style for the captcha image. There are eight different styles available with the plugin as...
  1. simply_blue
  2. simply_red
  3. simply_green
  4. charcoal_grey
  5. embosed_silver
  6. all_black
  7. distorted_black
  8. almost_invisible

Default style is 'simply_blue'. You can also specify 'random' to select the random image style.

  • :distortion - handles the complexity of the image. The :distortion can be set to 'low', 'medium' or 'high'. Default is 'low'.

  • :implode - handles the complexity of the image. The :implode can be set to 'none', 'low', 'medium' or 'high'. Default is 'medium'.

Create "./config/initializers/simple_captcha.rb"

SimpleCaptcha.setupdo |sc|
# default: 100x28sc.image_size='120x40'# default: 5sc.length=6# default: simply_blue# possible values:# 'embosed_silver',# 'simply_red',# 'simply_green',# 'simply_blue',# 'distorted_black',# 'all_black',# 'charcoal_grey',# 'almost_invisible'# 'random'sc.image_style='simply_green'# default: low# possible values: 'low', 'medium', 'high', 'random'sc.distortion='medium'# default: medium# possible values: 'none', 'low', 'medium', 'high'sc.implode='low'end

You can add your own style:

SimpleCaptcha.setupdo |sc|
sc.image_style='mycaptha'sc.add_image_style('mycaptha',["-background '#F4F7F8'","-fill '#86818B'","-border 1","-bordercolor '#E0E2E3'"])end

You can provide the path where image_magick is installed as well:

SimpleCaptcha.setupdo |sc|
sc.image_magick_path='/usr/bin'# you can check this from console by running: which convertend

You can setup in which format the reload of the captcha is executed:

SimpleCaptcha.setupdo |sc|
sc.refresh_format=:prototype# or :jquery, or :plain_javascript default is :jqueryend

If needed, you can explicitly state the font used for generating the captcha:

SimpleCaptcha.setupdo |sc|
sc.font="DejaVu-Sans"end

How to change the CSS for SimpleCaptcha DOM elements?

You can change the CSS of the SimpleCaptcha DOM elements as per your need in this file.

app/views/simple_captcha/_simple_captcha.erb

View's Examples

Controller Based Example

<%= show_simple_captcha %><%= show_simple_captcha(:label => "human authentication") %>

Model Based Example

<%= show_simple_captcha(:object => 'user', :label => "human authentication") %>

Model Options

  • :message - provides the custom message on failure of captcha authentication the default is "Secret Code did not match with the Image"

  • :add_to_base - if set to true, appends the error message to the base.

Model's Example
classUser < ActiveRecord::Baseapply_simple_captchaendclassUser < ActiveRecord::Baseapply_simple_captcha:message=>"The secret Image and code were different",:add_to_base=>trueend

I18n

en:
simple_captcha:
placeholder: "Enter the image value"label: "Enter the code in the box:"refresh_button_text: "Refresh"message:
default: "Secret Code did not match with the Image"user: "The secret Image and code were different"

Contributing

For testing, generate a temporary Rails dummy app inside test:

bundle
bundle exec rake dummy:setup
bundle exec rake app:db:migrate
bundle exec rake app:db:migrate RAILS_ENV=test
bundle exec rake test

Please add test cases when adding new functionality. I started with some basic example integration tests for a very basic coverage.

The tests will be run on Travis-CI.

Who's who?

Enjoy the simplest captcha implementation.

Original Author of the Version for Rails 2: Author: Sur, Blog: http://expressica.com, Contact: sur.max@gmail.com Plugin Homepage: http://expressica.com/simple_captcha

Plugin update for rails 3: http://github.com/galetahub

update for Rails 4, tests and forked by Stefan Wienert (pludoni GmbH)

About

Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models.

Topics

Resources

Stars

105 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - pludoni/simple-captcha: Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. · GitHub
Skip to content

Repository files navigation

SimpleCaptcha2

Build StatusGem Version

SimpleCaptcha(2) is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. SimpleCaptcha2 is available to be used with Rails 3 + 4. This is a fork of the popular Rubygem simple_captcha which got abandoned.

Features

  • Zero FileSystem usage (secret code moved to db-store and image storage removed).
  • Provides various image styles.
  • Provides three level of complexity of images.
  • Works absolutely fine in distributed environment(session and db based implementation works fine in distributed environment).
  • Implementation is as easy as just writing a single line in your view. <%= show_simple_captcha %> within the 'form' tags.
  • Flexible DOM and CSS handling(There is a separate view partial for rendering SimpleCaptcha DOM elements).
  • Automated removal of 1 hour old unmatched simple_captcha data.

Requirements

Installation

You might need to install Ghostscript on a Mac-System or a Debian-System:

brew install ghostscript
apt-get install ghostscript

The default font, that imagemagick uses is Arial. Make sure that font is available (apt install ttf-mscorefonts-installer) or change the font in the SimpleCaptcha config.

Put this into your Gemfile

gem'simple_captcha2',require: 'simple_captcha'

and run bundle install.

Setup

After installation, follow these simple steps to setup the plugin. The setup will depend on the version of rails your application is using.

rails generate simple_captcha [template_format] # Available options erb, haml. Default: erb
rake db:migrate # Mongoid: skip this step and remove the migration

Usage

There are two usage scenarios:

Controller Based

Add the following line in the file "app/controllers/application.rb"

ApplicationController < ActionController::BaseincludeSimpleCaptcha::ControllerHelpersend

In the view file within the form tags add this code

<%= show_simple_captcha %>

and in the controller's action authenticate it as

ifsimple_captcha_valid?dothiselsedothatend

Model Based

This is suggested, if you want to integrate the error message into the normal form validation flow.

In the view file within the form tags write this code

<%= show_simple_captcha(:object=>"user") %>

and in the model class add this code

classUser < ActiveRecord::Baseapply_simple_captchaend

Mongoid:

classUserincludeSimpleCaptcha::ModelHelpersapply_simple_captchaend

Strong parameters (Rails 4.x)

Must add them:

:captcha,:captcha_key

Form-Builder helper

<%= form_for @user do |form| -%>
...
<%= form.simple_captcha :label => "Enter numbers.." %>
...
<% end -%>

Validating with captcha

NOTE: @user.valid? will still work as it should, it will not validate the captcha code.

@user.valid_with_captcha?

Saving with captcha

NOTE: @user.save will still work as it should, it will not validate the captcha code.

@user.save_with_captcha

Formtastic integration

SimpleCaptcha detects if you are using Formtastic:

<%= form.input :captcha, :as => :simple_captcha %>

Tests

You can make the Captcha always pass with a initializer file: config/initializers/simple_captcha.rb

SimpleCaptcha.always_pass=Rails.env.test?

You can also ask for the value, e.g. Acceptance Tests/Features:

visit'/pages/form_tag'assert_equal1,SimpleCaptcha::SimpleCaptchaData.countfill_in'captcha',with: SimpleCaptcha::SimpleCaptchaData.first.value

ORM support

simple-captcha2 supports 3 type of ORM: ActiveRecord, Sequel and Mongoid.

Selection of ORM is base on loaded classes. If ActiveRecord is loaded then it will be used for the simple captcha data model. If ActiveRecord is undefined, Sequel presence is tested. If Sequel is defined it will used for the simple captcha data model. If not, Mongoid is used.

For instance if your application is using Sequel as an ORM just make sure you require sequel-rails gem before simple-captcha2 in your Gemfile and respective model will be selected automatically.

Options & Examples

View Options

  • :label - provides the custom text b/w the image and the text field, the default is "type the code from the image"
  • :object - the name of the object of the model class, to implement the model based captcha.
  • :code_type - return numeric only if set to 'numeric'
  • :multiple - allow to use the same captcha in multiple forms in one page. True for the first appaerance and false for the rest.

Global options

  • :image_style - provides the specific image style for the captcha image. There are eight different styles available with the plugin as...
  1. simply_blue
  2. simply_red
  3. simply_green
  4. charcoal_grey
  5. embosed_silver
  6. all_black
  7. distorted_black
  8. almost_invisible

Default style is 'simply_blue'. You can also specify 'random' to select the random image style.

  • :distortion - handles the complexity of the image. The :distortion can be set to 'low', 'medium' or 'high'. Default is 'low'.

  • :implode - handles the complexity of the image. The :implode can be set to 'none', 'low', 'medium' or 'high'. Default is 'medium'.

Create "./config/initializers/simple_captcha.rb"

SimpleCaptcha.setupdo |sc|
# default: 100x28sc.image_size='120x40'# default: 5sc.length=6# default: simply_blue# possible values:# 'embosed_silver',# 'simply_red',# 'simply_green',# 'simply_blue',# 'distorted_black',# 'all_black',# 'charcoal_grey',# 'almost_invisible'# 'random'sc.image_style='simply_green'# default: low# possible values: 'low', 'medium', 'high', 'random'sc.distortion='medium'# default: medium# possible values: 'none', 'low', 'medium', 'high'sc.implode='low'end

You can add your own style:

SimpleCaptcha.setupdo |sc|
sc.image_style='mycaptha'sc.add_image_style('mycaptha',["-background '#F4F7F8'","-fill '#86818B'","-border 1","-bordercolor '#E0E2E3'"])end

You can provide the path where image_magick is installed as well:

SimpleCaptcha.setupdo |sc|
sc.image_magick_path='/usr/bin'# you can check this from console by running: which convertend

You can setup in which format the reload of the captcha is executed:

SimpleCaptcha.setupdo |sc|
sc.refresh_format=:prototype# or :jquery, or :plain_javascript default is :jqueryend

If needed, you can explicitly state the font used for generating the captcha:

SimpleCaptcha.setupdo |sc|
sc.font="DejaVu-Sans"end

How to change the CSS for SimpleCaptcha DOM elements?

You can change the CSS of the SimpleCaptcha DOM elements as per your need in this file.

app/views/simple_captcha/_simple_captcha.erb

View's Examples

Controller Based Example

<%= show_simple_captcha %><%= show_simple_captcha(:label => "human authentication") %>

Model Based Example

<%= show_simple_captcha(:object => 'user', :label => "human authentication") %>

Model Options

  • :message - provides the custom message on failure of captcha authentication the default is "Secret Code did not match with the Image"

  • :add_to_base - if set to true, appends the error message to the base.

Model's Example
classUser < ActiveRecord::Baseapply_simple_captchaendclassUser < ActiveRecord::Baseapply_simple_captcha:message=>"The secret Image and code were different",:add_to_base=>trueend

I18n

en:
simple_captcha:
placeholder: "Enter the image value"label: "Enter the code in the box:"refresh_button_text: "Refresh"message:
default: "Secret Code did not match with the Image"user: "The secret Image and code were different"

Contributing

For testing, generate a temporary Rails dummy app inside test:

bundle
bundle exec rake dummy:setup
bundle exec rake app:db:migrate
bundle exec rake app:db:migrate RAILS_ENV=test
bundle exec rake test

Please add test cases when adding new functionality. I started with some basic example integration tests for a very basic coverage.

The tests will be run on Travis-CI.

Who's who?

Enjoy the simplest captcha implementation.

Original Author of the Version for Rails 2: Author: Sur, Blog: http://expressica.com, Contact: sur.max@gmail.com Plugin Homepage: http://expressica.com/simple_captcha

Plugin update for rails 3: http://github.com/galetahub

update for Rails 4, tests and forked by Stefan Wienert (pludoni GmbH)

About

Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models.

Topics

Resources

Stars

105 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - pludoni/simple-captcha: Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. · GitHub
Skip to content

Repository files navigation

SimpleCaptcha2

Build StatusGem Version

SimpleCaptcha(2) is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. SimpleCaptcha2 is available to be used with Rails 3 + 4. This is a fork of the popular Rubygem simple_captcha which got abandoned.

Features

  • Zero FileSystem usage (secret code moved to db-store and image storage removed).
  • Provides various image styles.
  • Provides three level of complexity of images.
  • Works absolutely fine in distributed environment(session and db based implementation works fine in distributed environment).
  • Implementation is as easy as just writing a single line in your view. <%= show_simple_captcha %> within the 'form' tags.
  • Flexible DOM and CSS handling(There is a separate view partial for rendering SimpleCaptcha DOM elements).
  • Automated removal of 1 hour old unmatched simple_captcha data.

Requirements

Installation

You might need to install Ghostscript on a Mac-System or a Debian-System:

brew install ghostscript
apt-get install ghostscript

The default font, that imagemagick uses is Arial. Make sure that font is available (apt install ttf-mscorefonts-installer) or change the font in the SimpleCaptcha config.

Put this into your Gemfile

gem'simple_captcha2',require: 'simple_captcha'

and run bundle install.

Setup

After installation, follow these simple steps to setup the plugin. The setup will depend on the version of rails your application is using.

rails generate simple_captcha [template_format] # Available options erb, haml. Default: erb
rake db:migrate # Mongoid: skip this step and remove the migration

Usage

There are two usage scenarios:

Controller Based

Add the following line in the file "app/controllers/application.rb"

ApplicationController < ActionController::BaseincludeSimpleCaptcha::ControllerHelpersend

In the view file within the form tags add this code

<%= show_simple_captcha %>

and in the controller's action authenticate it as

ifsimple_captcha_valid?dothiselsedothatend

Model Based

This is suggested, if you want to integrate the error message into the normal form validation flow.

In the view file within the form tags write this code

<%= show_simple_captcha(:object=>"user") %>

and in the model class add this code

classUser < ActiveRecord::Baseapply_simple_captchaend

Mongoid:

classUserincludeSimpleCaptcha::ModelHelpersapply_simple_captchaend

Strong parameters (Rails 4.x)

Must add them:

:captcha,:captcha_key

Form-Builder helper

<%= form_for @user do |form| -%>
...
<%= form.simple_captcha :label => "Enter numbers.." %>
...
<% end -%>

Validating with captcha

NOTE: @user.valid? will still work as it should, it will not validate the captcha code.

@user.valid_with_captcha?

Saving with captcha

NOTE: @user.save will still work as it should, it will not validate the captcha code.

@user.save_with_captcha

Formtastic integration

SimpleCaptcha detects if you are using Formtastic:

<%= form.input :captcha, :as => :simple_captcha %>

Tests

You can make the Captcha always pass with a initializer file: config/initializers/simple_captcha.rb

SimpleCaptcha.always_pass=Rails.env.test?

You can also ask for the value, e.g. Acceptance Tests/Features:

visit'/pages/form_tag'assert_equal1,SimpleCaptcha::SimpleCaptchaData.countfill_in'captcha',with: SimpleCaptcha::SimpleCaptchaData.first.value

ORM support

simple-captcha2 supports 3 type of ORM: ActiveRecord, Sequel and Mongoid.

Selection of ORM is base on loaded classes. If ActiveRecord is loaded then it will be used for the simple captcha data model. If ActiveRecord is undefined, Sequel presence is tested. If Sequel is defined it will used for the simple captcha data model. If not, Mongoid is used.

For instance if your application is using Sequel as an ORM just make sure you require sequel-rails gem before simple-captcha2 in your Gemfile and respective model will be selected automatically.

Options & Examples

View Options

  • :label - provides the custom text b/w the image and the text field, the default is "type the code from the image"
  • :object - the name of the object of the model class, to implement the model based captcha.
  • :code_type - return numeric only if set to 'numeric'
  • :multiple - allow to use the same captcha in multiple forms in one page. True for the first appaerance and false for the rest.

Global options

  • :image_style - provides the specific image style for the captcha image. There are eight different styles available with the plugin as...
  1. simply_blue
  2. simply_red
  3. simply_green
  4. charcoal_grey
  5. embosed_silver
  6. all_black
  7. distorted_black
  8. almost_invisible

Default style is 'simply_blue'. You can also specify 'random' to select the random image style.

  • :distortion - handles the complexity of the image. The :distortion can be set to 'low', 'medium' or 'high'. Default is 'low'.

  • :implode - handles the complexity of the image. The :implode can be set to 'none', 'low', 'medium' or 'high'. Default is 'medium'.

Create "./config/initializers/simple_captcha.rb"

SimpleCaptcha.setupdo |sc|
# default: 100x28sc.image_size='120x40'# default: 5sc.length=6# default: simply_blue# possible values:# 'embosed_silver',# 'simply_red',# 'simply_green',# 'simply_blue',# 'distorted_black',# 'all_black',# 'charcoal_grey',# 'almost_invisible'# 'random'sc.image_style='simply_green'# default: low# possible values: 'low', 'medium', 'high', 'random'sc.distortion='medium'# default: medium# possible values: 'none', 'low', 'medium', 'high'sc.implode='low'end

You can add your own style:

SimpleCaptcha.setupdo |sc|
sc.image_style='mycaptha'sc.add_image_style('mycaptha',["-background '#F4F7F8'","-fill '#86818B'","-border 1","-bordercolor '#E0E2E3'"])end

You can provide the path where image_magick is installed as well:

SimpleCaptcha.setupdo |sc|
sc.image_magick_path='/usr/bin'# you can check this from console by running: which convertend

You can setup in which format the reload of the captcha is executed:

SimpleCaptcha.setupdo |sc|
sc.refresh_format=:prototype# or :jquery, or :plain_javascript default is :jqueryend

If needed, you can explicitly state the font used for generating the captcha:

SimpleCaptcha.setupdo |sc|
sc.font="DejaVu-Sans"end

How to change the CSS for SimpleCaptcha DOM elements?

You can change the CSS of the SimpleCaptcha DOM elements as per your need in this file.

app/views/simple_captcha/_simple_captcha.erb

View's Examples

Controller Based Example

<%= show_simple_captcha %><%= show_simple_captcha(:label => "human authentication") %>

Model Based Example

<%= show_simple_captcha(:object => 'user', :label => "human authentication") %>

Model Options

  • :message - provides the custom message on failure of captcha authentication the default is "Secret Code did not match with the Image"

  • :add_to_base - if set to true, appends the error message to the base.

Model's Example
classUser < ActiveRecord::Baseapply_simple_captchaendclassUser < ActiveRecord::Baseapply_simple_captcha:message=>"The secret Image and code were different",:add_to_base=>trueend

I18n

en:
simple_captcha:
placeholder: "Enter the image value"label: "Enter the code in the box:"refresh_button_text: "Refresh"message:
default: "Secret Code did not match with the Image"user: "The secret Image and code were different"

Contributing

For testing, generate a temporary Rails dummy app inside test:

bundle
bundle exec rake dummy:setup
bundle exec rake app:db:migrate
bundle exec rake app:db:migrate RAILS_ENV=test
bundle exec rake test

Please add test cases when adding new functionality. I started with some basic example integration tests for a very basic coverage.

The tests will be run on Travis-CI.

Who's who?

Enjoy the simplest captcha implementation.

Original Author of the Version for Rails 2: Author: Sur, Blog: http://expressica.com, Contact: sur.max@gmail.com Plugin Homepage: http://expressica.com/simple_captcha

Plugin update for rails 3: http://github.com/galetahub

update for Rails 4, tests and forked by Stefan Wienert (pludoni GmbH)

About

Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models.

Topics

Resources

Stars

105 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - pludoni/simple-captcha: Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. · GitHub
Skip to content

Repository files navigation

SimpleCaptcha2

Build StatusGem Version

SimpleCaptcha(2) is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. SimpleCaptcha2 is available to be used with Rails 3 + 4. This is a fork of the popular Rubygem simple_captcha which got abandoned.

Features

  • Zero FileSystem usage (secret code moved to db-store and image storage removed).
  • Provides various image styles.
  • Provides three level of complexity of images.
  • Works absolutely fine in distributed environment(session and db based implementation works fine in distributed environment).
  • Implementation is as easy as just writing a single line in your view. <%= show_simple_captcha %> within the 'form' tags.
  • Flexible DOM and CSS handling(There is a separate view partial for rendering SimpleCaptcha DOM elements).
  • Automated removal of 1 hour old unmatched simple_captcha data.

Requirements

Installation

You might need to install Ghostscript on a Mac-System or a Debian-System:

brew install ghostscript
apt-get install ghostscript

The default font, that imagemagick uses is Arial. Make sure that font is available (apt install ttf-mscorefonts-installer) or change the font in the SimpleCaptcha config.

Put this into your Gemfile

gem'simple_captcha2',require: 'simple_captcha'

and run bundle install.

Setup

After installation, follow these simple steps to setup the plugin. The setup will depend on the version of rails your application is using.

rails generate simple_captcha [template_format] # Available options erb, haml. Default: erb
rake db:migrate # Mongoid: skip this step and remove the migration

Usage

There are two usage scenarios:

Controller Based

Add the following line in the file "app/controllers/application.rb"

ApplicationController < ActionController::BaseincludeSimpleCaptcha::ControllerHelpersend

In the view file within the form tags add this code

<%= show_simple_captcha %>

and in the controller's action authenticate it as

ifsimple_captcha_valid?dothiselsedothatend

Model Based

This is suggested, if you want to integrate the error message into the normal form validation flow.

In the view file within the form tags write this code

<%= show_simple_captcha(:object=>"user") %>

and in the model class add this code

classUser < ActiveRecord::Baseapply_simple_captchaend

Mongoid:

classUserincludeSimpleCaptcha::ModelHelpersapply_simple_captchaend

Strong parameters (Rails 4.x)

Must add them:

:captcha,:captcha_key

Form-Builder helper

<%= form_for @user do |form| -%>
...
<%= form.simple_captcha :label => "Enter numbers.." %>
...
<% end -%>

Validating with captcha

NOTE: @user.valid? will still work as it should, it will not validate the captcha code.

@user.valid_with_captcha?

Saving with captcha

NOTE: @user.save will still work as it should, it will not validate the captcha code.

@user.save_with_captcha

Formtastic integration

SimpleCaptcha detects if you are using Formtastic:

<%= form.input :captcha, :as => :simple_captcha %>

Tests

You can make the Captcha always pass with a initializer file: config/initializers/simple_captcha.rb

SimpleCaptcha.always_pass=Rails.env.test?

You can also ask for the value, e.g. Acceptance Tests/Features:

visit'/pages/form_tag'assert_equal1,SimpleCaptcha::SimpleCaptchaData.countfill_in'captcha',with: SimpleCaptcha::SimpleCaptchaData.first.value

ORM support

simple-captcha2 supports 3 type of ORM: ActiveRecord, Sequel and Mongoid.

Selection of ORM is base on loaded classes. If ActiveRecord is loaded then it will be used for the simple captcha data model. If ActiveRecord is undefined, Sequel presence is tested. If Sequel is defined it will used for the simple captcha data model. If not, Mongoid is used.

For instance if your application is using Sequel as an ORM just make sure you require sequel-rails gem before simple-captcha2 in your Gemfile and respective model will be selected automatically.

Options & Examples

View Options

  • :label - provides the custom text b/w the image and the text field, the default is "type the code from the image"
  • :object - the name of the object of the model class, to implement the model based captcha.
  • :code_type - return numeric only if set to 'numeric'
  • :multiple - allow to use the same captcha in multiple forms in one page. True for the first appaerance and false for the rest.

Global options

  • :image_style - provides the specific image style for the captcha image. There are eight different styles available with the plugin as...
  1. simply_blue
  2. simply_red
  3. simply_green
  4. charcoal_grey
  5. embosed_silver
  6. all_black
  7. distorted_black
  8. almost_invisible

Default style is 'simply_blue'. You can also specify 'random' to select the random image style.

  • :distortion - handles the complexity of the image. The :distortion can be set to 'low', 'medium' or 'high'. Default is 'low'.

  • :implode - handles the complexity of the image. The :implode can be set to 'none', 'low', 'medium' or 'high'. Default is 'medium'.

Create "./config/initializers/simple_captcha.rb"

SimpleCaptcha.setupdo |sc|
# default: 100x28sc.image_size='120x40'# default: 5sc.length=6# default: simply_blue# possible values:# 'embosed_silver',# 'simply_red',# 'simply_green',# 'simply_blue',# 'distorted_black',# 'all_black',# 'charcoal_grey',# 'almost_invisible'# 'random'sc.image_style='simply_green'# default: low# possible values: 'low', 'medium', 'high', 'random'sc.distortion='medium'# default: medium# possible values: 'none', 'low', 'medium', 'high'sc.implode='low'end

You can add your own style:

SimpleCaptcha.setupdo |sc|
sc.image_style='mycaptha'sc.add_image_style('mycaptha',["-background '#F4F7F8'","-fill '#86818B'","-border 1","-bordercolor '#E0E2E3'"])end

You can provide the path where image_magick is installed as well:

SimpleCaptcha.setupdo |sc|
sc.image_magick_path='/usr/bin'# you can check this from console by running: which convertend

You can setup in which format the reload of the captcha is executed:

SimpleCaptcha.setupdo |sc|
sc.refresh_format=:prototype# or :jquery, or :plain_javascript default is :jqueryend

If needed, you can explicitly state the font used for generating the captcha:

SimpleCaptcha.setupdo |sc|
sc.font="DejaVu-Sans"end

How to change the CSS for SimpleCaptcha DOM elements?

You can change the CSS of the SimpleCaptcha DOM elements as per your need in this file.

app/views/simple_captcha/_simple_captcha.erb

View's Examples

Controller Based Example

<%= show_simple_captcha %><%= show_simple_captcha(:label => "human authentication") %>

Model Based Example

<%= show_simple_captcha(:object => 'user', :label => "human authentication") %>

Model Options

  • :message - provides the custom message on failure of captcha authentication the default is "Secret Code did not match with the Image"

  • :add_to_base - if set to true, appends the error message to the base.

Model's Example
classUser < ActiveRecord::Baseapply_simple_captchaendclassUser < ActiveRecord::Baseapply_simple_captcha:message=>"The secret Image and code were different",:add_to_base=>trueend

I18n

en:
simple_captcha:
placeholder: "Enter the image value"label: "Enter the code in the box:"refresh_button_text: "Refresh"message:
default: "Secret Code did not match with the Image"user: "The secret Image and code were different"

Contributing

For testing, generate a temporary Rails dummy app inside test:

bundle
bundle exec rake dummy:setup
bundle exec rake app:db:migrate
bundle exec rake app:db:migrate RAILS_ENV=test
bundle exec rake test

Please add test cases when adding new functionality. I started with some basic example integration tests for a very basic coverage.

The tests will be run on Travis-CI.

Who's who?

Enjoy the simplest captcha implementation.

Original Author of the Version for Rails 2: Author: Sur, Blog: http://expressica.com, Contact: sur.max@gmail.com Plugin Homepage: http://expressica.com/simple_captcha

Plugin update for rails 3: http://github.com/galetahub

update for Rails 4, tests and forked by Stefan Wienert (pludoni GmbH)

About

Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models.

Topics

Resources

Stars

105 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - pludoni/simple-captcha: Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. · GitHub
Skip to content

Repository files navigation

SimpleCaptcha2

Build StatusGem Version

SimpleCaptcha(2) is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. SimpleCaptcha2 is available to be used with Rails 3 + 4. This is a fork of the popular Rubygem simple_captcha which got abandoned.

Features

  • Zero FileSystem usage (secret code moved to db-store and image storage removed).
  • Provides various image styles.
  • Provides three level of complexity of images.
  • Works absolutely fine in distributed environment(session and db based implementation works fine in distributed environment).
  • Implementation is as easy as just writing a single line in your view. <%= show_simple_captcha %> within the 'form' tags.
  • Flexible DOM and CSS handling(There is a separate view partial for rendering SimpleCaptcha DOM elements).
  • Automated removal of 1 hour old unmatched simple_captcha data.

Requirements

Installation

You might need to install Ghostscript on a Mac-System or a Debian-System:

brew install ghostscript
apt-get install ghostscript

The default font, that imagemagick uses is Arial. Make sure that font is available (apt install ttf-mscorefonts-installer) or change the font in the SimpleCaptcha config.

Put this into your Gemfile

gem'simple_captcha2',require: 'simple_captcha'

and run bundle install.

Setup

After installation, follow these simple steps to setup the plugin. The setup will depend on the version of rails your application is using.

rails generate simple_captcha [template_format] # Available options erb, haml. Default: erb
rake db:migrate # Mongoid: skip this step and remove the migration

Usage

There are two usage scenarios:

Controller Based

Add the following line in the file "app/controllers/application.rb"

ApplicationController < ActionController::BaseincludeSimpleCaptcha::ControllerHelpersend

In the view file within the form tags add this code

<%= show_simple_captcha %>

and in the controller's action authenticate it as

ifsimple_captcha_valid?dothiselsedothatend

Model Based

This is suggested, if you want to integrate the error message into the normal form validation flow.

In the view file within the form tags write this code

<%= show_simple_captcha(:object=>"user") %>

and in the model class add this code

classUser < ActiveRecord::Baseapply_simple_captchaend

Mongoid:

classUserincludeSimpleCaptcha::ModelHelpersapply_simple_captchaend

Strong parameters (Rails 4.x)

Must add them:

:captcha,:captcha_key

Form-Builder helper

<%= form_for @user do |form| -%>
...
<%= form.simple_captcha :label => "Enter numbers.." %>
...
<% end -%>

Validating with captcha

NOTE: @user.valid? will still work as it should, it will not validate the captcha code.

@user.valid_with_captcha?

Saving with captcha

NOTE: @user.save will still work as it should, it will not validate the captcha code.

@user.save_with_captcha

Formtastic integration

SimpleCaptcha detects if you are using Formtastic:

<%= form.input :captcha, :as => :simple_captcha %>

Tests

You can make the Captcha always pass with a initializer file: config/initializers/simple_captcha.rb

SimpleCaptcha.always_pass=Rails.env.test?

You can also ask for the value, e.g. Acceptance Tests/Features:

visit'/pages/form_tag'assert_equal1,SimpleCaptcha::SimpleCaptchaData.countfill_in'captcha',with: SimpleCaptcha::SimpleCaptchaData.first.value

ORM support

simple-captcha2 supports 3 type of ORM: ActiveRecord, Sequel and Mongoid.

Selection of ORM is base on loaded classes. If ActiveRecord is loaded then it will be used for the simple captcha data model. If ActiveRecord is undefined, Sequel presence is tested. If Sequel is defined it will used for the simple captcha data model. If not, Mongoid is used.

For instance if your application is using Sequel as an ORM just make sure you require sequel-rails gem before simple-captcha2 in your Gemfile and respective model will be selected automatically.

Options & Examples

View Options

  • :label - provides the custom text b/w the image and the text field, the default is "type the code from the image"
  • :object - the name of the object of the model class, to implement the model based captcha.
  • :code_type - return numeric only if set to 'numeric'
  • :multiple - allow to use the same captcha in multiple forms in one page. True for the first appaerance and false for the rest.

Global options

  • :image_style - provides the specific image style for the captcha image. There are eight different styles available with the plugin as...
  1. simply_blue
  2. simply_red
  3. simply_green
  4. charcoal_grey
  5. embosed_silver
  6. all_black
  7. distorted_black
  8. almost_invisible

Default style is 'simply_blue'. You can also specify 'random' to select the random image style.

  • :distortion - handles the complexity of the image. The :distortion can be set to 'low', 'medium' or 'high'. Default is 'low'.

  • :implode - handles the complexity of the image. The :implode can be set to 'none', 'low', 'medium' or 'high'. Default is 'medium'.

Create "./config/initializers/simple_captcha.rb"

SimpleCaptcha.setupdo |sc|
# default: 100x28sc.image_size='120x40'# default: 5sc.length=6# default: simply_blue# possible values:# 'embosed_silver',# 'simply_red',# 'simply_green',# 'simply_blue',# 'distorted_black',# 'all_black',# 'charcoal_grey',# 'almost_invisible'# 'random'sc.image_style='simply_green'# default: low# possible values: 'low', 'medium', 'high', 'random'sc.distortion='medium'# default: medium# possible values: 'none', 'low', 'medium', 'high'sc.implode='low'end

You can add your own style:

SimpleCaptcha.setupdo |sc|
sc.image_style='mycaptha'sc.add_image_style('mycaptha',["-background '#F4F7F8'","-fill '#86818B'","-border 1","-bordercolor '#E0E2E3'"])end

You can provide the path where image_magick is installed as well:

SimpleCaptcha.setupdo |sc|
sc.image_magick_path='/usr/bin'# you can check this from console by running: which convertend

You can setup in which format the reload of the captcha is executed:

SimpleCaptcha.setupdo |sc|
sc.refresh_format=:prototype# or :jquery, or :plain_javascript default is :jqueryend

If needed, you can explicitly state the font used for generating the captcha:

SimpleCaptcha.setupdo |sc|
sc.font="DejaVu-Sans"end

How to change the CSS for SimpleCaptcha DOM elements?

You can change the CSS of the SimpleCaptcha DOM elements as per your need in this file.

app/views/simple_captcha/_simple_captcha.erb

View's Examples

Controller Based Example

<%= show_simple_captcha %><%= show_simple_captcha(:label => "human authentication") %>

Model Based Example

<%= show_simple_captcha(:object => 'user', :label => "human authentication") %>

Model Options

  • :message - provides the custom message on failure of captcha authentication the default is "Secret Code did not match with the Image"

  • :add_to_base - if set to true, appends the error message to the base.

Model's Example
classUser < ActiveRecord::Baseapply_simple_captchaendclassUser < ActiveRecord::Baseapply_simple_captcha:message=>"The secret Image and code were different",:add_to_base=>trueend

I18n

en:
simple_captcha:
placeholder: "Enter the image value"label: "Enter the code in the box:"refresh_button_text: "Refresh"message:
default: "Secret Code did not match with the Image"user: "The secret Image and code were different"

Contributing

For testing, generate a temporary Rails dummy app inside test:

bundle
bundle exec rake dummy:setup
bundle exec rake app:db:migrate
bundle exec rake app:db:migrate RAILS_ENV=test
bundle exec rake test

Please add test cases when adding new functionality. I started with some basic example integration tests for a very basic coverage.

The tests will be run on Travis-CI.

Who's who?

Enjoy the simplest captcha implementation.

Original Author of the Version for Rails 2: Author: Sur, Blog: http://expressica.com, Contact: sur.max@gmail.com Plugin Homepage: http://expressica.com/simple_captcha

Plugin update for rails 3: http://github.com/galetahub

update for Rails 4, tests and forked by Stefan Wienert (pludoni GmbH)

About

Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models.

Topics

Resources

Stars

105 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - pludoni/simple-captcha: Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. · GitHub
Skip to content

Repository files navigation

SimpleCaptcha2

Build StatusGem Version

SimpleCaptcha(2) is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models. SimpleCaptcha2 is available to be used with Rails 3 + 4. This is a fork of the popular Rubygem simple_captcha which got abandoned.

Features

  • Zero FileSystem usage (secret code moved to db-store and image storage removed).
  • Provides various image styles.
  • Provides three level of complexity of images.
  • Works absolutely fine in distributed environment(session and db based implementation works fine in distributed environment).
  • Implementation is as easy as just writing a single line in your view. <%= show_simple_captcha %> within the 'form' tags.
  • Flexible DOM and CSS handling(There is a separate view partial for rendering SimpleCaptcha DOM elements).
  • Automated removal of 1 hour old unmatched simple_captcha data.

Requirements

Installation

You might need to install Ghostscript on a Mac-System or a Debian-System:

brew install ghostscript
apt-get install ghostscript

The default font, that imagemagick uses is Arial. Make sure that font is available (apt install ttf-mscorefonts-installer) or change the font in the SimpleCaptcha config.

Put this into your Gemfile

gem'simple_captcha2',require: 'simple_captcha'

and run bundle install.

Setup

After installation, follow these simple steps to setup the plugin. The setup will depend on the version of rails your application is using.

rails generate simple_captcha [template_format] # Available options erb, haml. Default: erb
rake db:migrate # Mongoid: skip this step and remove the migration

Usage

There are two usage scenarios:

Controller Based

Add the following line in the file "app/controllers/application.rb"

ApplicationController < ActionController::BaseincludeSimpleCaptcha::ControllerHelpersend

In the view file within the form tags add this code

<%= show_simple_captcha %>

and in the controller's action authenticate it as

ifsimple_captcha_valid?dothiselsedothatend

Model Based

This is suggested, if you want to integrate the error message into the normal form validation flow.

In the view file within the form tags write this code

<%= show_simple_captcha(:object=>"user") %>

and in the model class add this code

classUser < ActiveRecord::Baseapply_simple_captchaend

Mongoid:

classUserincludeSimpleCaptcha::ModelHelpersapply_simple_captchaend

Strong parameters (Rails 4.x)

Must add them:

:captcha,:captcha_key

Form-Builder helper

<%= form_for @user do |form| -%>
...
<%= form.simple_captcha :label => "Enter numbers.." %>
...
<% end -%>

Validating with captcha

NOTE: @user.valid? will still work as it should, it will not validate the captcha code.

@user.valid_with_captcha?

Saving with captcha

NOTE: @user.save will still work as it should, it will not validate the captcha code.

@user.save_with_captcha

Formtastic integration

SimpleCaptcha detects if you are using Formtastic:

<%= form.input :captcha, :as => :simple_captcha %>

Tests

You can make the Captcha always pass with a initializer file: config/initializers/simple_captcha.rb

SimpleCaptcha.always_pass=Rails.env.test?

You can also ask for the value, e.g. Acceptance Tests/Features:

visit'/pages/form_tag'assert_equal1,SimpleCaptcha::SimpleCaptchaData.countfill_in'captcha',with: SimpleCaptcha::SimpleCaptchaData.first.value

ORM support

simple-captcha2 supports 3 type of ORM: ActiveRecord, Sequel and Mongoid.

Selection of ORM is base on loaded classes. If ActiveRecord is loaded then it will be used for the simple captcha data model. If ActiveRecord is undefined, Sequel presence is tested. If Sequel is defined it will used for the simple captcha data model. If not, Mongoid is used.

For instance if your application is using Sequel as an ORM just make sure you require sequel-rails gem before simple-captcha2 in your Gemfile and respective model will be selected automatically.

Options & Examples

View Options

  • :label - provides the custom text b/w the image and the text field, the default is "type the code from the image"
  • :object - the name of the object of the model class, to implement the model based captcha.
  • :code_type - return numeric only if set to 'numeric'
  • :multiple - allow to use the same captcha in multiple forms in one page. True for the first appaerance and false for the rest.

Global options

  • :image_style - provides the specific image style for the captcha image. There are eight different styles available with the plugin as...
  1. simply_blue
  2. simply_red
  3. simply_green
  4. charcoal_grey
  5. embosed_silver
  6. all_black
  7. distorted_black
  8. almost_invisible

Default style is 'simply_blue'. You can also specify 'random' to select the random image style.

  • :distortion - handles the complexity of the image. The :distortion can be set to 'low', 'medium' or 'high'. Default is 'low'.

  • :implode - handles the complexity of the image. The :implode can be set to 'none', 'low', 'medium' or 'high'. Default is 'medium'.

Create "./config/initializers/simple_captcha.rb"

SimpleCaptcha.setupdo |sc|
# default: 100x28sc.image_size='120x40'# default: 5sc.length=6# default: simply_blue# possible values:# 'embosed_silver',# 'simply_red',# 'simply_green',# 'simply_blue',# 'distorted_black',# 'all_black',# 'charcoal_grey',# 'almost_invisible'# 'random'sc.image_style='simply_green'# default: low# possible values: 'low', 'medium', 'high', 'random'sc.distortion='medium'# default: medium# possible values: 'none', 'low', 'medium', 'high'sc.implode='low'end

You can add your own style:

SimpleCaptcha.setupdo |sc|
sc.image_style='mycaptha'sc.add_image_style('mycaptha',["-background '#F4F7F8'","-fill '#86818B'","-border 1","-bordercolor '#E0E2E3'"])end

You can provide the path where image_magick is installed as well:

SimpleCaptcha.setupdo |sc|
sc.image_magick_path='/usr/bin'# you can check this from console by running: which convertend

You can setup in which format the reload of the captcha is executed:

SimpleCaptcha.setupdo |sc|
sc.refresh_format=:prototype# or :jquery, or :plain_javascript default is :jqueryend

If needed, you can explicitly state the font used for generating the captcha:

SimpleCaptcha.setupdo |sc|
sc.font="DejaVu-Sans"end

How to change the CSS for SimpleCaptcha DOM elements?

You can change the CSS of the SimpleCaptcha DOM elements as per your need in this file.

app/views/simple_captcha/_simple_captcha.erb

View's Examples

Controller Based Example

<%= show_simple_captcha %><%= show_simple_captcha(:label => "human authentication") %>

Model Based Example

<%= show_simple_captcha(:object => 'user', :label => "human authentication") %>

Model Options

  • :message - provides the custom message on failure of captcha authentication the default is "Secret Code did not match with the Image"

  • :add_to_base - if set to true, appends the error message to the base.

Model's Example
classUser < ActiveRecord::Baseapply_simple_captchaendclassUser < ActiveRecord::Baseapply_simple_captcha:message=>"The secret Image and code were different",:add_to_base=>trueend

I18n

en:
simple_captcha:
placeholder: "Enter the image value"label: "Enter the code in the box:"refresh_button_text: "Refresh"message:
default: "Secret Code did not match with the Image"user: "The secret Image and code were different"

Contributing

For testing, generate a temporary Rails dummy app inside test:

bundle
bundle exec rake dummy:setup
bundle exec rake app:db:migrate
bundle exec rake app:db:migrate RAILS_ENV=test
bundle exec rake test

Please add test cases when adding new functionality. I started with some basic example integration tests for a very basic coverage.

The tests will be run on Travis-CI.

Who's who?

Enjoy the simplest captcha implementation.

Original Author of the Version for Rails 2: Author: Sur, Blog: http://expressica.com, Contact: sur.max@gmail.com Plugin Homepage: http://expressica.com/simple_captcha

Plugin update for rails 3: http://github.com/galetahub

update for Rails 4, tests and forked by Stefan Wienert (pludoni GmbH)

About

Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models.

Topics

Resources

Stars

105 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages