# RuCaptcha
[](https://badge.fury.io/rb/rucaptcha)
[](https://travis-ci.org/huacnlee/rucaptcha)
[](https://codeclimate.com/github/huacnlee/rucaptcha)
This is a Captcha gem for Rails Applications. It drawing captcha image with C code.
## Example
[中文介绍和使用说明](https://ruby-china.org/topics/27832)
## Feature
- No dependencies. No ImageMagick, No RMagick.
- For Rails Application;
- Simple, Easy to use;
- High performance.
## Usage
Put rucaptcha in your `Gemfile`:
```
gem 'rucaptcha'
```
Create `config/initializers/rucaptcha.rb`
```rb
RuCaptcha.configure do
# Color style, default: :colorful, allows: [:colorful, :black_white]
# self.style = :colorful
# Custom captcha code expire time if you need, default: 2 minutes
# self.expires_in = 120
# [Requirement/重要]
# Store Captcha code where, this config more like Rails config.cache_store
# default: Read config info from `Rails.application.config.cache_store`
# But RuCaptcha requirements cache_store not in [:null_store, :memory_store, :file_store]
# 默认:会从 Rails 配置的 cache_store 里面读取相同的配置信息,用于存储验证码字符
# 但如果是 [:null_store, :memory_store, :file_store] 之类的,你可以通过下面的配置项单独给 RuCaptcha 配置 cache_store
self.cache_store = :mem_cache_store
end
```
Edit `config/routes.rb`, add the following code:
```rb
Rails.application.routes.draw do
...
mount RuCaptcha::Engine => "/rucaptcha"
...
end
```
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
```
> TIP: Sometime you may need keep last verified captcha code in session on `verify_rucaptcha?` method call, you can use `keep_session: true`. For example: `verify_rucaptcha? @user, keep_session: true`.
View `app/views/account/new.html.erb`
```erb