nobrainer-devise 0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZTI0NGVlMDQ5NzRhZjU2MzU2NzljN2NiNjkxMjcwM2Y0ZDlhZDIxYQ==
5
+ data.tar.gz: !binary |-
6
+ MzEyNTg4ZDFlMjU5ZjM2NTcwOWE4M2YyYTlkMDU0MTY0OGEzZDg4MQ==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ MzI5N2M4Zjk1MjljNWVlOGQ0ODIxOGVlNmQzNzcyMjc5ZGVmNGM2MTU1ODk3
10
+ Mjg2NDI5MjIxMDU5Yjg3N2E1MDhhNDk4ZDIzNGYzZGFlMDE0Yzc4OTcwYjZh
11
+ NjcyYjNkZjk1YzQ0NTVkZjRhNDVmOWUzMzBiMDBmMDhiZTYxNGQ=
12
+ data.tar.gz: !binary |-
13
+ NTQ1YmFiNjZiMWQxMDJlNTJjOGRkOWExNDU5Y2YxNTcyNjliNDU3MTQwMmZk
14
+ OGJlNTU1YzA3NTYyMTA1YjMzZWZjOWMzZWVhM2I4M2E1OThiNDc5YzQxM2Rj
15
+ ZGUyMDZiY2Q2N2ZkZWY1M2QxY2EzNmY1YzE3ZmQ3OGRjMmRlYzc=
@@ -0,0 +1,25 @@
1
+ NoBrainer Devise Adapter
2
+ ========================
3
+
4
+ nobrainer-devise is an adapter to make
5
+ [Devise](https://github.com/plataformatec/devise/) work nicely with
6
+ [NoBrainer](http://nobrainer.io).
7
+
8
+ Installation
9
+ ------------
10
+
11
+ Include in your Gemfile:
12
+
13
+ ```ruby
14
+ gem 'nobrainer-devise'
15
+ ```
16
+
17
+ Use devise as usual.
18
+
19
+ If it does not work, make sure that your `config/initializers/devise.rb` file
20
+ contains `require 'devise/orm/nobrainer'`.
21
+
22
+ License
23
+ -------
24
+
25
+ MIT license.
@@ -0,0 +1,3 @@
1
+ require 'orm_adapter/adapters/nobrainer'
2
+
3
+ NoBrainer::Document::ClassMethods.send :include, Devise::Models
@@ -0,0 +1,59 @@
1
+ require 'rails/generators/named_base'
2
+ require 'generators/devise/orm_helpers'
3
+
4
+ module NoBrainer
5
+ module Generators
6
+ class DeviseGenerator < Rails::Generators::NamedBase
7
+ include Devise::Generators::OrmHelpers
8
+
9
+ def self.namespace
10
+ super.gsub(/no_brainer/,'nobrainer')
11
+ end
12
+
13
+ def generate_model
14
+ invoke "nobrainer:model", [name] unless model_exists? && behavior == :invoke
15
+ end
16
+
17
+ def inject_field_types
18
+ inject_into_file model_path, migration_data, :after => "include NoBrainer::Document\n" if model_exists?
19
+ end
20
+
21
+ def inject_devise_content
22
+ inject_into_file model_path, model_contents, :after => "include NoBrainer::Document\n" if model_exists?
23
+ end
24
+
25
+ def migration_data
26
+ <<RUBY
27
+ ## Database authenticatable
28
+ field :email, :default => ""
29
+ field :encrypted_password, :default => ""
30
+
31
+ ## Recoverable
32
+ field :reset_password_token
33
+ field :reset_password_sent_at
34
+
35
+ ## Rememberable
36
+ field :remember_created_at
37
+
38
+ ## Trackable
39
+ field :sign_in_count, :default => 0
40
+ field :current_sign_in_at
41
+ field :last_sign_in_at
42
+ field :current_sign_in_ip
43
+ field :last_sign_in_ip
44
+
45
+ ## Confirmable
46
+ # field :confirmation_token
47
+ # field :confirmed_at
48
+ # field :confirmation_sent_at
49
+ # field :unconfirmed_email # Only if using reconfirmable
50
+
51
+ ## Lockable
52
+ # field :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts
53
+ # field :unlock_token, # Only if unlock strategy is :email or :both
54
+ # field :locked_at
55
+ RUBY
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,2 @@
1
+ require 'nobrainer'
2
+ require 'devise'
@@ -0,0 +1,66 @@
1
+ require 'nobrainer'
2
+ require 'orm_adapter'
3
+
4
+ module NoBrainer
5
+ module Document
6
+ module ClassMethods
7
+ include OrmAdapter::ToAdapter
8
+ end
9
+
10
+ class OrmAdapter < ::OrmAdapter::Base
11
+ # get a list of column names for a given class
12
+ def column_names
13
+ klass.fields.keys
14
+ end
15
+
16
+ # @see OrmAdapter::Base#get!
17
+ def get!(id)
18
+ klass.find!(wrap_key(id))
19
+ end
20
+
21
+ # @see OrmAdapter::Base#get
22
+ def get(id)
23
+ klass.find(wrap_key(id))
24
+ end
25
+
26
+ # @see OrmAdapter::Base#find_first
27
+ def find_first(options = {})
28
+ conditions, order = extract_conditions!(options)
29
+ klass.where(conditions_to_fields(conditions)).order_by(*order_clause(order)).first
30
+ end
31
+
32
+ # @see OrmAdapter::Base#find_all
33
+ def find_all(options = {})
34
+ conditions, order, limit, offset = extract_conditions!(options)
35
+ klass.where(conditions_to_fields(conditions)).order_by(*order_clause(order)).limit(limit).offset(offset)
36
+ end
37
+
38
+ # @see OrmAdapter::Base#create!
39
+ def create!(attributes = {})
40
+ klass.create!(attributes)
41
+ end
42
+
43
+ # @see OrmAdapter::Base#destroy
44
+ def destroy(object)
45
+ object.destroy if valid_object?(object)
46
+ end
47
+
48
+ protected
49
+
50
+ # converts and documents to ids
51
+ def conditions_to_fields(conditions)
52
+ conditions.inject({}) do |fields, (key, value)|
53
+ if value.is_a?(NoBrainer::Document) && column_names.include?(:"#{key}_id")
54
+ fields.merge(:"#{key}_id" => value.id)
55
+ else
56
+ fields.merge(key => value)
57
+ end
58
+ end
59
+ end
60
+
61
+ def order_clause(order)
62
+ order.map { |k,v| {k => v} }
63
+ end
64
+ end
65
+ end
66
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nobrainer-devise
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Nicolas Viennot
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ type: :runtime
15
+ prerelease: false
16
+ name: devise
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.2.2
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 3.2.2
27
+ - !ruby/object:Gem::Dependency
28
+ type: :runtime
29
+ prerelease: false
30
+ name: nobrainer
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
35
+ version: 0.9.1
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.9.1
41
+ description: NoBrainer adapter for Devise
42
+ email:
43
+ - nicolas@viennot.biz
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/devise/orm/nobrainer.rb
49
+ - lib/orm_adapter/adapters/nobrainer.rb
50
+ - lib/generators/nobrainer/devise_generator.rb
51
+ - lib/nobrainer-devise.rb
52
+ - README.md
53
+ homepage: http://github.com/nviennot/nobrainer-devise
54
+ licenses:
55
+ - MIT
56
+ metadata: {}
57
+ post_install_message:
58
+ rdoc_options: []
59
+ require_paths:
60
+ - lib
61
+ required_ruby_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ requirements: []
72
+ rubyforge_project:
73
+ rubygems_version: 2.0.7
74
+ signing_key:
75
+ specification_version: 4
76
+ summary: NoBrainer adapter for Devise
77
+ test_files: []
78
+ has_rdoc: false