Module: RuCaptcha

Defined in:
lib/rucaptcha.rb,
lib/rucaptcha/cache.rb,
lib/rucaptcha/engine.rb,
lib/rucaptcha/version.rb,
lib/rucaptcha/view_helpers.rb,
lib/rucaptcha/configuration.rb,
lib/rucaptcha/controller_helpers.rb,
lib/rucaptcha/errors/configuration.rb,
app/controllers/ru_captcha/captcha_controller.rb,
ext/rucaptcha/rucaptcha.c

Defined Under Namespace

Modules: ControllerHelpers, Errors, ViewHelpers Classes: CaptchaController, Configuration, Engine

Constant Summary collapse

VERSION =
'2.5.1'

Class Method Summary collapse

Class Method Details

.cacheObject



5
6
7
8
9
# File 'lib/rucaptcha/cache.rb', line 5

def cache
  return @cache if defined? @cache
  @cache = ActiveSupport::Cache.lookup_store(RuCaptcha.config.cache_store)
  @cache
end

.check_cache_store!Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/rucaptcha.rb', line 51

def check_cache_store!
  cache_store = RuCaptcha.config.cache_store
  store_name = cache_store.is_a?(Array) ? cache_store.first : cache_store
  if [:memory_store, :null_store, :file_store].include?(store_name)
    RuCaptcha.config.cache_store = [:file_store, Rails.root.join('tmp/cache/rucaptcha/session')]

    puts "

  RuCaptcha's cache_store requirements are stored across processes and machines,
  such as :mem_cache_store, :redis_store, or other distributed storage.
  But your current set is #{cache_store}, it has changed to :file_store for working.
  NOTE: :file_store is still not a good way, it only works with single server case.

  Please make config file `config/initializers/rucaptcha.rb` to setup `cache_store`.
  More infomation please read GitHub RuCaptcha README file.
  https://github.com/huacnlee/rucaptcha

"
  end
end

.configObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/rucaptcha.rb', line 15

def config
  return @config if defined?(@config)
  @config = Configuration.new
  @config.style         = :colorful
  @config.length        = 5
  @config.strikethrough = true
  @config.outline       = false
  @config.expires_in    = 2.minutes
  @config.skip_cache_store_check = false

  if Rails.application
    @config.cache_store = Rails.application.config.cache_store
  else
    @config.cache_store = :mem_cache_store
  end
  @config.cache_store
  @config
end

.configure(&block) ⇒ Object



34
35
36
# File 'lib/rucaptcha.rb', line 34

def configure(&block)
  config.instance_exec(&block)
end

.createObject



215
# File 'ext/rucaptcha/rucaptcha.c', line 215

VALUE create(VALUE self, VALUE style, VALUE length, VALUE line, VALUE filter);

.generateObject



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/rucaptcha.rb', line 38

def generate()
  style = config.style == :colorful ? 1 : 0
  length = config.length

  unless length.in?(3..7)
    raise RuCaptcha::Errors::Configuration, 'length config error, value must in 3..7'
  end

  strikethrough = config.strikethrough ? 1 : 0
  outline = config.outline ? 1 : 0
  self.create(style, length, strikethrough, outline)
end