rucaptcha/README.md

118 lines
2.7 KiB
Markdown
Raw Normal View History

2015-10-26 06:09:39 +00:00
# RuCaptcha
2015-10-26 11:58:17 +00:00
[![Gem Version](https://badge.fury.io/rb/rucaptcha.svg)](https://badge.fury.io/rb/rucaptcha)
2015-10-29 09:53:41 +00:00
[![Build Status](https://travis-ci.org/huacnlee/rucaptcha.svg)](https://travis-ci.org/huacnlee/rucaptcha)
2015-10-26 06:09:39 +00:00
2015-10-26 09:56:47 +00:00
This is a Captcha gem for Rails Applications. It runs an ImageMagick command to draw Captcha image - so it has NO performance issues or memory leak issues.
2015-10-26 06:09:39 +00:00
2015-10-26 11:56:00 +00:00
**There is NO: RMagick**
2015-10-26 11:53:07 +00:00
2015-10-26 06:09:39 +00:00
Idea by: https://ruby-china.org/topics/20558#reply4
2015-10-26 12:25:54 +00:00
[中文介绍和使用说明](https://ruby-china.org/topics/27832)
## Feature
- Only need `ImageMagick`, No `RMagick`, No `mini_magick`;
- For Rails Application;
- Simple, Easy to use;
- File Caching for performance.
## Requirements
2015-10-26 06:09:39 +00:00
- ImageMagick
#### Ubuntu
```
sudo apt-get install imagemagick
```
#### Mac OS X
```bash
brew install imagemagick ghostscript
```
## Example
2015-10-26 10:04:35 +00:00
2015-10-27 02:06:04 +00:00
![rucaptcha1](https://cloud.githubusercontent.com/assets/5518/10726119/a844dfce-7c0b-11e5-99c3-a818f3ef3dd2.png) ![rucaptcha2](https://cloud.githubusercontent.com/assets/5518/10747608/2f2f5f10-7c92-11e5-860b-914db5695a57.png) ![rucaptcha3](https://cloud.githubusercontent.com/assets/5518/10747609/2f5bbac4-7c92-11e5-8192-4aa5dfb025b7.png) ![rucaptcha4](https://cloud.githubusercontent.com/assets/5518/10747611/2f7c6a12-7c92-11e5-8730-de7295b36dd6.png) ![rucaptcha5](https://cloud.githubusercontent.com/assets/5518/10747610/2f7a9d86-7c92-11e5-911a-44596c9aeef5.png)
2015-10-26 10:04:35 +00:00
## Usage
2015-10-26 06:09:39 +00:00
Put rucaptcha in your `Gemfile`:
```
gem 'rucaptcha'
```
2015-10-27 13:27:17 +00:00
Create `config/initializers/rucaptcha.rb`
2015-10-26 06:09:39 +00:00
```rb
RuCaptcha.configure do
# Number of chars, default: 4
self.len = 4
# Image font size, default: 48
self.font_size = 48
# Cache generated images in file store, this is config files limit, default: 100
# set 0 to disable file cache.
self.cache_limit = 100
2015-10-26 06:09:39 +00:00
end
```
2015-10-27 07:13:39 +00:00
Edit `config/routes.rb`, add the following code:
2015-10-27 02:27:01 +00:00
```rb
Rails.application.routes.draw do
...
mount RuCaptcha::Engine => "/rucaptcha"
...
end
```
2015-10-26 06:09:39 +00:00
Controller `app/controller/account_controller.rb`
```rb
class AccountController < ApplicationController
def create
@user = User.new(params[:user])
if verify_rucaptcha?(@user) && @user.save
redirect_to root_path, notice: 'Sign up successed.'
else
render 'account/new'
end
end
end
```
View `app/views/account/new.html.erb`
```erb
<form>
...
<div class="form-group">
<%= rucaptcha_input_tag(class: 'form-control', placeholder: 'Input Captcha') %>
<%= rucaptcha_image_tag(alt: 'Captcha') %>
</div>
...
</form>
```
### Write your test skip captcha validation
2015-10-26 12:22:27 +00:00
```rb
describe 'sign up and login', type: :feature do
before do
allow_any_instance_of(ActionController::Base).to receive(:verify_rucaptcha?).and_return(true)
end
it { ... }
end
```