active_pstore 0.4.8 → 0.4.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2d3f881a40805e586bbfff7fffb3c53e03096706
4
- data.tar.gz: f5f3e9b34f0c810444f4acea18fa0d9e6f79bb66
3
+ metadata.gz: 9f3816ea1ca51415462ac3f9e404a002758a3a62
4
+ data.tar.gz: 5542b80a872c4321edcc1543dd58202f97073815
5
5
  SHA512:
6
- metadata.gz: 7995748c2bba385ba293e2410b96a36db1ed4338b684e5f4fc3150f0c954fe210a974e133aab4fddd4f179b8d6cb4c28b76c69ed19a5b1f228b1136200fdcf11
7
- data.tar.gz: 9958eb9579064313f2e81f55aa51012cad999bc12353255de8087a571d5c927aff1ab2868d16d087247a9860052c620d7fe0a028c39e1fb3e44101685d234e6c
6
+ metadata.gz: 4a34726b07509bf18d78c1d7ad56683df663472d5d8f7667d82470532238e3c8f41de902969e690e66633a17980b325cbbef4032e65ba1b4c7152941e486306e
7
+ data.tar.gz: 1f64d02dc1bbb0424742faa569385b488216b538d5cbcfef0cb2cd6157a5d4794196e6eb2c9e35faa3702fb169292b057d3e4631c50e28bcd8c4d3385af96388
data/README.ja.md CHANGED
@@ -40,7 +40,7 @@ randy_rhoads = Artist.new(name: 'Randy Rhoads')
40
40
  ```ruby
41
41
  randy_rhoads = Artist.new {|a|
42
42
  a.name = 'Randy Rhoads'
43
- )
43
+ }
44
44
  ```
45
45
 
46
46
  `ActivePStore::Base.new` メソッドと別名として `ActivePStore::Base.build` を使うこともできます。
@@ -110,7 +110,7 @@ Artist.where(birth_date: Date.new(1948, 12, 3)..Date.new(1956, 12, 6))
110
110
 
111
111
  ## REQUIREMENTS
112
112
 
113
- * no requirements
113
+ * [Active Model](https://github.com/rails/rails/tree/master/activemodel)
114
114
 
115
115
  ## INSTALL
116
116
 
data/README.md CHANGED
@@ -39,7 +39,7 @@ or
39
39
  ```ruby
40
40
  randy_rhoads = Artist.new {|a|
41
41
  a.name = 'Randy Rhoads'
42
- )
42
+ }
43
43
  ```
44
44
 
45
45
  `ActivePStore::Base.build` method the same as `ActivePStore::Base.new` method.
@@ -109,7 +109,7 @@ see [spec codes](https://github.com/koic/active_pstore/tree/master/spec) for mor
109
109
 
110
110
  ## REQUIREMENTS
111
111
 
112
- no requirements
112
+ * [Active Model](https://github.com/rails/rails/tree/master/activemodel)
113
113
 
114
114
  ## INSTALL
115
115
 
@@ -0,0 +1,11 @@
1
+ module ActivePStore
2
+ module AttributeMethods
3
+ def [](attr)
4
+ if respond_to? attr.to_sym
5
+ self.__send__(attr.to_sym)
6
+ else
7
+ raise "undefined method `#{attr}'"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,5 @@
1
+ require 'active_model'
2
+
1
3
  module ActivePStore
2
4
  class Base
3
5
  extend ActivePStore::ConnectionHandling
@@ -8,15 +10,19 @@ module ActivePStore
8
10
  extend ActivePStore::QueryMethods
9
11
  extend ActivePStore::Querying
10
12
  extend ActivePStore::Delegation
13
+ include ActiveModel::Model
14
+ include ActivePStore::AttributeMethods
11
15
  include ActivePStore::Core
12
16
  include ActivePStore::Persistence
13
17
 
14
- def initialize(attributes = {})
15
- attributes.each do |attr, val|
16
- if respond_to? "#{attr}=".to_sym
17
- self.__send__("#{attr}=", val)
18
- else
19
- raise "Unknown method, '#{attr}='"
18
+ def initialize(attributes = nil)
19
+ if attributes.present?
20
+ attributes.each do |attr, val|
21
+ if respond_to? "#{attr}=".to_sym
22
+ self.__send__("#{attr}=", val)
23
+ else
24
+ raise "undefined method `#{attr}='"
25
+ end
20
26
  end
21
27
  end
22
28
 
@@ -32,9 +38,9 @@ module ActivePStore
32
38
  }
33
39
  end
34
40
 
35
- def create(attributes = {}, &block)
41
+ def create(attributes = nil, &block)
36
42
  if attributes.is_a?(Array)
37
- attributes.map {|a| create(a, &block) }
43
+ attributes.map {|attr| create(attr, &block) }
38
44
  else
39
45
  build(attributes, &block).tap do |obj|
40
46
  obj.save
@@ -42,9 +48,13 @@ module ActivePStore
42
48
  end
43
49
  end
44
50
 
45
- def first_or_create(attributes = {}, &block)
51
+ def first_or_create(attributes = nil, &block)
46
52
  first || create(attributes, &block)
47
53
  end
54
+
55
+ def find_or_create_by(attributes, &block)
56
+ find_by(attributes) || create(attributes, &block)
57
+ end
48
58
  end
49
59
  end
50
60
  end
@@ -2,12 +2,18 @@ require 'pstore'
2
2
 
3
3
  module ActivePStore
4
4
  module ConnectionHandling
5
+ def connection_config
6
+ @@config.dup.freeze
7
+ end
8
+
5
9
  def establish_connection(options)
6
10
  unless options.is_a? Hash
7
11
  raise ArgumentError, "You must specify at database configuration. Example: ActivePStore::Base.establish_connection(database: '/path/to/file')"
8
12
  end
9
13
 
10
- @@db = PStore.new((options[:database] || options['database']).to_s)
14
+ @@config = {database: (options[:database] || options['database']).to_s}
15
+
16
+ @@db = PStore.new(@@config[:database])
11
17
  end
12
18
 
13
19
  def use_connection
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ require 'rails/generators/active_pstore_generator'
3
+
4
+ module Active_Pstore
5
+ module Generators
6
+ class ConfigGenerator < Rails::Generators::Base
7
+ desc "Creates a Active_Pstore configuration file at config/active_pstore.yml"
8
+
9
+ argument :database_name, type: :string, optional: true
10
+
11
+ def self.source_root
12
+ @_active_pstore_source_root ||= File.expand_path("../templates", __FILE__)
13
+ end
14
+
15
+ def app_name
16
+ Rails::Application.subclasses.first.parent.to_s.underscore
17
+ end
18
+
19
+ def create_config_file
20
+ template 'active_pstore.yml', File.join('config', "active_pstore.yml")
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,135 @@
1
+ development:
2
+ # Configure available database clients. (required)
3
+ clients:
4
+ # Defines the default client. (required)
5
+ default:
6
+ # Defines the name of the default database that Mongoid can connect to.
7
+ # (required).
8
+ database: <%= database_name || app_name %>_development
9
+ # Provides the hosts the default client can connect to. Must be an array
10
+ # of host:port pairs. (required)
11
+ hosts:
12
+ - localhost:27017
13
+ options:
14
+ # Change the default write concern. (default = { w: 1 })
15
+ # write:
16
+ # w: 1
17
+
18
+ # Change the default read preference. Valid options for mode are: :secondary,
19
+ # :secondary_preferred, :primary, :primary_preferred, :nearest
20
+ # (default: primary)
21
+ # read:
22
+ # mode: :secondary_preferred
23
+
24
+ # The name of the user for authentication.
25
+ # user: 'user'
26
+
27
+ # The password of the user for authentication.
28
+ # password: 'password'
29
+
30
+ # The user's database roles.
31
+ # roles:
32
+ # - 'dbOwner'
33
+
34
+ # Change the default authentication mechanism. Valid options are: :scram,
35
+ # :mongodb_cr, :mongodb_x509, and :plain. (default on 3.0 is :scram, default
36
+ # on 2.4 and 2.6 is :plain)
37
+ # auth_mech: :scram
38
+
39
+ # The database or source to authenticate the user against. (default: admin)
40
+ # auth_source: admin
41
+
42
+ # Force a the driver cluster to behave in a certain manner instead of auto-
43
+ # discovering. Can be one of: :direct, :replica_set, :sharded. Set to :direct
44
+ # when connecting to hidden members of a replica set.
45
+ # connect: :direct
46
+
47
+ # Changes the default time in seconds the server monitors refresh their status
48
+ # via ismaster commands. (default: 10)
49
+ # heartbeat_frequency: 10
50
+
51
+ # The time in seconds for selecting servers for a near read preference. (default: 5)
52
+ # local_threshold: 5
53
+
54
+ # The timeout in seconds for selecting a server for an operation. (default: 30)
55
+ # server_selection_timeout: 30
56
+
57
+ # The maximum number of connections in the connection pool. (default: 5)
58
+ # max_pool_size: 5
59
+
60
+ # The minimum number of connections in the connection pool. (default: 1)
61
+ # min_pool_size: 1
62
+
63
+ # The time to wait, in seconds, in the connection pool for a connection
64
+ # to be checked in before timing out. (default: 5)
65
+ # wait_queue_timeout: 5
66
+
67
+ # The time to wait to establish a connection before timing out, in seconds.
68
+ # (default: 5)
69
+ # connect_timeout: 5
70
+
71
+ # The timeout to wait to execute operations on a socket before raising an error.
72
+ # (default: 5)
73
+ # socket_timeout: 5
74
+
75
+ # The name of the replica set to connect to. Servers provided as seeds that do
76
+ # not belong to this replica set will be ignored.
77
+ # replica_set: name
78
+
79
+ # Whether to connect to the servers via ssl. (default: false)
80
+ # ssl: true
81
+
82
+ # The certificate file used to identify the connection against MongoDB.
83
+ # ssl_cert: /path/to/my.cert
84
+
85
+ # The private keyfile used to identify the connection against MongoDB.
86
+ # Note that even if the key is stored in the same file as the certificate,
87
+ # both need to be explicitly specified.
88
+ # ssl_key: /path/to/my.key
89
+
90
+ # A passphrase for the private key.
91
+ # ssl_key_pass_phrase: password
92
+
93
+ # Whether or not to do peer certification validation. (default: false)
94
+ # ssl_verify: true
95
+
96
+ # The file containing a set of concatenated certification authority certifications
97
+ # used to validate certs passed from the other end of the connection.
98
+ # ssl_ca_cert: /path/to/ca.cert
99
+
100
+
101
+ # Configure Mongoid specific options. (optional)
102
+ options:
103
+ # Includes the root model name in json serialization. (default: false)
104
+ # include_root_in_json: false
105
+
106
+ # Include the _type field in serialization. (default: false)
107
+ # include_type_for_serialization: false
108
+
109
+ # Preload all models in development, needed when models use
110
+ # inheritance. (default: false)
111
+ # preload_models: false
112
+
113
+ # Raise an error when performing a #find and the document is not found.
114
+ # (default: true)
115
+ # raise_not_found_error: true
116
+
117
+ # Raise an error when defining a scope with the same name as an
118
+ # existing method. (default: false)
119
+ # scope_overwrite_exception: false
120
+
121
+ # Use Active Support's time zone in conversions. (default: true)
122
+ # use_activesupport_time_zone: true
123
+
124
+ # Ensure all times are UTC in the app side. (default: false)
125
+ # use_utc: false
126
+ test:
127
+ clients:
128
+ default:
129
+ database: <%= database_name || app_name %>_test
130
+ hosts:
131
+ - localhost:27017
132
+ options:
133
+ read:
134
+ mode: primary
135
+ max_pool_size: 1
@@ -0,0 +1,23 @@
1
+ require "rails/generators/active_pstore_generator"
2
+
3
+ module ActivePStore
4
+ module Generators
5
+ class ModelGenerator < Base
6
+
7
+ desc "Creates a ActivePStore model"
8
+ argument :attributes, type: :array, default: [], banner: "attribute attribute"
9
+
10
+ check_class_collision
11
+
12
+ # class_option :timestamps, type: :boolean
13
+ # class_option :parent, type: :string, desc: "The parent class for the generated model"
14
+ # class_option :collection, type: :string, desc: "The collection for storing model's documents"
15
+
16
+ def create_model_file
17
+ template "model.rb.tt", File.join("app/models", class_path, "#{file_name}.rb")
18
+ end
19
+
20
+ hook_for :test_framework
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,7 @@
1
+ <% module_namespacing do -%>
2
+ class <%= class_name %> < ActivePStore::Base
3
+ <% attributes.reject {|attr| attr.reference?}.each do |attribute| -%>
4
+ attr_reader :<%= attribute.name %>
5
+ <% end -%>
6
+ end
7
+ <% end -%>
@@ -0,0 +1,29 @@
1
+ require "rails/generators/named_base"
2
+ require "rails/generators/active_model"
3
+
4
+ module ActivePStore
5
+ module Generators
6
+ class Base < ::Rails::Generators::NamedBase
7
+
8
+ def self.source_root
9
+ @_active_pstore_source_root ||=
10
+ File.expand_path("../#{base_name}/#{generator_name}/templates", __FILE__)
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ =begin
17
+ module Rails
18
+ module Generators
19
+ class GeneratedAttribute
20
+ def type_class
21
+ return "Time" if type == :datetime
22
+ return "String" if type == :text
23
+ return "Mongoid::Boolean" if type == :boolean
24
+ type.to_s.camelcase
25
+ end
26
+ end
27
+ end
28
+ =end
29
+ end
@@ -1,15 +1,9 @@
1
+ require 'forwardable'
2
+
1
3
  module ActivePStore
2
4
  module Querying
3
- def update_all(updates)
4
- all.update_all(updates)
5
- end
6
-
7
- def destroy_all
8
- all.destroy_all
9
- end
5
+ extend Forwardable
10
6
 
11
- def count
12
- all.count
13
- end
7
+ def_delegators :all, :update_all, :destroy_all, :count
14
8
  end
15
9
  end
@@ -0,0 +1,110 @@
1
+ # encoding: utf-8
2
+ #require "mongoid/railties/document"
3
+ require 'rails'
4
+ require 'rails/active_pstore'
5
+
6
+ module Rails
7
+ module ActivePStore
8
+
9
+ # Hooks ActivePStore into Rails 3 and higher.
10
+ #
11
+ # @since 2.0.0
12
+ class Railtie < Rails::Railtie
13
+
14
+ # Mapping of rescued exceptions to HTTP responses
15
+ #
16
+ # @example
17
+ # railtie.rescue_responses
18
+ #
19
+ # @ return [Hash] rescued responses
20
+ #
21
+ # @since 2.4.3
22
+ def self.rescue_responses
23
+ {
24
+ 'ActivePStore::Errors::RecordNotFound' => :not_found
25
+ # "Mongoid::Errors::Validations" => 422
26
+ }
27
+ end
28
+
29
+ config.app_generators.orm :active_pstore, migration: false
30
+
31
+ if config.action_dispatch.rescue_responses
32
+ config.action_dispatch.rescue_responses.merge!(rescue_responses)
33
+ end
34
+
35
+ # rake_tasks do
36
+ # load "mongoid/railties/database.rake"
37
+ # end
38
+
39
+ # Exposes Mongoid's configuration to the Rails application configuration.
40
+ #
41
+ # @example Set up configuration in the Rails app.
42
+ # module MyApplication
43
+ # class Application < Rails::Application
44
+ # config.mongoid.logger = Logger.new($stdout, :warn)
45
+ # config.mongoid.persist_in_safe_mode = true
46
+ # end
47
+ # end
48
+ #
49
+ # @since 2.0.0
50
+ # config.mongoid = ::Mongoid::Config
51
+
52
+ # Initialize Mongoid. This will look for a mongoid.yml in the config
53
+ # directory and configure mongoid appropriately.
54
+ #
55
+ # @since 2.0.0
56
+ =begin
57
+ initializer "mongoid.load-config" do
58
+ config_file = Rails.root.join("config", "mongoid.yml")
59
+ if config_file.file?
60
+ begin
61
+ ::Mongoid.load!(config_file)
62
+ rescue ::Mongoid::Errors::NoClientsConfig => e
63
+ handle_configuration_error(e)
64
+ rescue ::Mongoid::Errors::NoDefaultSession => e
65
+ handle_configuration_error(e)
66
+ rescue ::Mongoid::Errors::NoSessionDatabase => e
67
+ handle_configuration_error(e)
68
+ rescue ::Mongoid::Errors::NoSessionHosts => e
69
+ handle_configuration_error(e)
70
+ end
71
+ end
72
+ end
73
+ =end
74
+
75
+ # Set the proper error types for Rails. DocumentNotFound errors should be
76
+ # 404s and not 500s, validation errors are 422s.
77
+ #
78
+ # @since 2.0.0
79
+ # config.after_initialize do
80
+ # unless config.action_dispatch.rescue_responses
81
+ # ActionDispatch::ShowExceptions.rescue_responses.update(Railtie.rescue_responses)
82
+ # end
83
+ # end
84
+
85
+ # Due to all models not getting loaded and messing up inheritance queries
86
+ # and indexing, we need to preload the models in order to address this.
87
+ #
88
+ # This will happen for every request in development, once in other
89
+ # environments.
90
+ #
91
+ # @since 2.0.0
92
+ # initializer "mongoid.preload-models" do |app|
93
+ # config.to_prepare do
94
+ # ::Rails::Mongoid.preload_models(app)
95
+ # end
96
+ # end
97
+
98
+ # Rails runs all initializers first before getting into any generator
99
+ # code, so we have no way in the intitializer to know if we are
100
+ # generating a mongoid.yml. So instead of failing, we catch all the
101
+ # errors and print them out.
102
+ #
103
+ # @since 3.0.0
104
+ # def handle_configuration_error(e)
105
+ # puts "There is a configuration error with the current mongoid.yml."
106
+ # puts e.message
107
+ # end
108
+ end
109
+ end
110
+ end
@@ -1,3 +1,3 @@
1
1
  module ActivePStore
2
- VERSION = '0.4.8'
2
+ VERSION = '0.4.9'
3
3
  end
data/lib/active_pstore.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  module ActivePStore; end
2
2
 
3
+ require 'active_pstore/attribute_methods'
3
4
  require 'active_pstore/calculations'
4
5
  require 'active_pstore/collection'
5
6
  require 'active_pstore/connection_handling'
@@ -0,0 +1,55 @@
1
+ module Rails
2
+ module ActivePStore
3
+ extend self
4
+
5
+ # Use the application configuration to get every model and require it, so
6
+ # that indexing and inheritance work in both development and production
7
+ # with the same results.
8
+ #
9
+ # @example Load all the application models.
10
+ # Rails::Mongoid.load_models(app)
11
+ #
12
+ # @param [ Application ] app The rails application.
13
+ def load_models(app)
14
+ app.config.paths['app/models'].expanded.each do |path|
15
+ preload = ::ActivePStore.preload_models
16
+ if preload.resizable?
17
+ files = preload.map {|model| "#{path}/#{model.underscore}.rb" }
18
+ else
19
+ files = Dir.glob("#{path}/**/*.rb")
20
+ end
21
+
22
+ files.sort.each do |file|
23
+ load_model(file.gsub("#{path}/" , "").gsub(".rb", ""))
24
+ end
25
+ end
26
+ end
27
+
28
+ # Conditionally calls `Rails::Mongoid.load_models(app)` if the
29
+ # `::Mongoid.preload_models` is `true`.
30
+ #
31
+ # @param [ Application ] app The rails application.
32
+ def preload_models(app)
33
+ load_models(app) if ::ActivePStore.preload_models
34
+ end
35
+
36
+ private
37
+
38
+ # I don't want to mock out kernel for unit testing purposes, so added this
39
+ # method as a convenience.
40
+ #
41
+ # @example Load the model.
42
+ # Mongoid.load_model("/mongoid/behaviour")
43
+ #
44
+ # @param [ String ] file The base filename.
45
+ #
46
+ # @since 2.0.0.rc.3
47
+ def load_model(file)
48
+ begin
49
+ require_dependency(file)
50
+ rescue Exception => e
51
+ Logger.new($stdout).warn(e.message)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,23 @@
1
+ require 'rails/generators/active_pstore_generator'
2
+
3
+ module Active_Pstore
4
+ module Generators
5
+ class ConfigGenerator < Rails::Generators::Base
6
+ desc "Creates a Active_Pstore configuration file at config/active_pstore.yml"
7
+
8
+ argument :database_name, type: :string, optional: true
9
+
10
+ def self.source_root
11
+ @_active_pstore_source_root ||= File.expand_path("../templates", __FILE__)
12
+ end
13
+
14
+ def app_name
15
+ Rails::Application.subclasses.first.parent.to_s.underscore
16
+ end
17
+
18
+ def create_config_file
19
+ template 'active_pstore.yml', File.join('config', "active_pstore.yml")
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,135 @@
1
+ development:
2
+ # Configure available database clients. (required)
3
+ clients:
4
+ # Defines the default client. (required)
5
+ default:
6
+ # Defines the name of the default database that Mongoid can connect to.
7
+ # (required).
8
+ database: <%= database_name || app_name %>_development
9
+ # Provides the hosts the default client can connect to. Must be an array
10
+ # of host:port pairs. (required)
11
+ hosts:
12
+ - localhost:27017
13
+ options:
14
+ # Change the default write concern. (default = { w: 1 })
15
+ # write:
16
+ # w: 1
17
+
18
+ # Change the default read preference. Valid options for mode are: :secondary,
19
+ # :secondary_preferred, :primary, :primary_preferred, :nearest
20
+ # (default: primary)
21
+ # read:
22
+ # mode: :secondary_preferred
23
+
24
+ # The name of the user for authentication.
25
+ # user: 'user'
26
+
27
+ # The password of the user for authentication.
28
+ # password: 'password'
29
+
30
+ # The user's database roles.
31
+ # roles:
32
+ # - 'dbOwner'
33
+
34
+ # Change the default authentication mechanism. Valid options are: :scram,
35
+ # :mongodb_cr, :mongodb_x509, and :plain. (default on 3.0 is :scram, default
36
+ # on 2.4 and 2.6 is :plain)
37
+ # auth_mech: :scram
38
+
39
+ # The database or source to authenticate the user against. (default: admin)
40
+ # auth_source: admin
41
+
42
+ # Force a the driver cluster to behave in a certain manner instead of auto-
43
+ # discovering. Can be one of: :direct, :replica_set, :sharded. Set to :direct
44
+ # when connecting to hidden members of a replica set.
45
+ # connect: :direct
46
+
47
+ # Changes the default time in seconds the server monitors refresh their status
48
+ # via ismaster commands. (default: 10)
49
+ # heartbeat_frequency: 10
50
+
51
+ # The time in seconds for selecting servers for a near read preference. (default: 5)
52
+ # local_threshold: 5
53
+
54
+ # The timeout in seconds for selecting a server for an operation. (default: 30)
55
+ # server_selection_timeout: 30
56
+
57
+ # The maximum number of connections in the connection pool. (default: 5)
58
+ # max_pool_size: 5
59
+
60
+ # The minimum number of connections in the connection pool. (default: 1)
61
+ # min_pool_size: 1
62
+
63
+ # The time to wait, in seconds, in the connection pool for a connection
64
+ # to be checked in before timing out. (default: 5)
65
+ # wait_queue_timeout: 5
66
+
67
+ # The time to wait to establish a connection before timing out, in seconds.
68
+ # (default: 5)
69
+ # connect_timeout: 5
70
+
71
+ # The timeout to wait to execute operations on a socket before raising an error.
72
+ # (default: 5)
73
+ # socket_timeout: 5
74
+
75
+ # The name of the replica set to connect to. Servers provided as seeds that do
76
+ # not belong to this replica set will be ignored.
77
+ # replica_set: name
78
+
79
+ # Whether to connect to the servers via ssl. (default: false)
80
+ # ssl: true
81
+
82
+ # The certificate file used to identify the connection against MongoDB.
83
+ # ssl_cert: /path/to/my.cert
84
+
85
+ # The private keyfile used to identify the connection against MongoDB.
86
+ # Note that even if the key is stored in the same file as the certificate,
87
+ # both need to be explicitly specified.
88
+ # ssl_key: /path/to/my.key
89
+
90
+ # A passphrase for the private key.
91
+ # ssl_key_pass_phrase: password
92
+
93
+ # Whether or not to do peer certification validation. (default: false)
94
+ # ssl_verify: true
95
+
96
+ # The file containing a set of concatenated certification authority certifications
97
+ # used to validate certs passed from the other end of the connection.
98
+ # ssl_ca_cert: /path/to/ca.cert
99
+
100
+
101
+ # Configure Mongoid specific options. (optional)
102
+ options:
103
+ # Includes the root model name in json serialization. (default: false)
104
+ # include_root_in_json: false
105
+
106
+ # Include the _type field in serialization. (default: false)
107
+ # include_type_for_serialization: false
108
+
109
+ # Preload all models in development, needed when models use
110
+ # inheritance. (default: false)
111
+ # preload_models: false
112
+
113
+ # Raise an error when performing a #find and the document is not found.
114
+ # (default: true)
115
+ # raise_not_found_error: true
116
+
117
+ # Raise an error when defining a scope with the same name as an
118
+ # existing method. (default: false)
119
+ # scope_overwrite_exception: false
120
+
121
+ # Use Active Support's time zone in conversions. (default: true)
122
+ # use_activesupport_time_zone: true
123
+
124
+ # Ensure all times are UTC in the app side. (default: false)
125
+ # use_utc: false
126
+ test:
127
+ clients:
128
+ default:
129
+ database: <%= database_name || app_name %>_test
130
+ hosts:
131
+ - localhost:27017
132
+ options:
133
+ read:
134
+ mode: primary
135
+ max_pool_size: 1
@@ -0,0 +1,18 @@
1
+ require 'rails/generators/active_pstore_generator'
2
+
3
+ module Active_Pstore
4
+ module Generators
5
+ class ModelGenerator < Base
6
+ desc 'Creates a ActivePStore model'
7
+ argument :attributes, type: :array, default: [], banner: 'attribute_name attribute_name'
8
+
9
+ check_class_collision
10
+
11
+ def create_model_file
12
+ template 'model.rb.tt', File.join('app/models', class_path, "#{file_name}.rb")
13
+ end
14
+
15
+ hook_for :test_framework
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,7 @@
1
+ <% module_namespacing do -%>
2
+ class <%= class_name %> < ActivePStore::Base
3
+ <% attributes.reject {|attr| attr.reference?}.each do |attribute| -%>
4
+ attr_accessor :<%= attribute.name %>
5
+ <% end -%>
6
+ end
7
+ <% end -%>
@@ -0,0 +1,28 @@
1
+ require 'rails/generators/named_base'
2
+ require 'rails/generators/active_model'
3
+
4
+ module Active_Pstore
5
+ module Generators
6
+ class Base < ::Rails::Generators::NamedBase
7
+ def self.source_root
8
+ @_active_pstore_source_root ||=
9
+ File.expand_path("../#{base_name}/#{generator_name}/templates", __FILE__)
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
+ =begin
16
+ module Rails
17
+ module Generators
18
+ class GeneratedAttribute
19
+ def type_class
20
+ return "Time" if type == :datetime
21
+ return "String" if type == :text
22
+ return "Mongoid::Boolean" if type == :boolean
23
+ type.to_s.camelcase
24
+ end
25
+ end
26
+ end
27
+ end
28
+ =end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_pstore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.8
4
+ version: 0.4.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koichi ITO
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-22 00:00:00.000000000 Z
11
+ date: 2015-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activemodel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: codeclimate-test-reporter
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -48,6 +62,7 @@ files:
48
62
  - README.ja.md
49
63
  - README.md
50
64
  - lib/active_pstore.rb
65
+ - lib/active_pstore/attribute_methods.rb
51
66
  - lib/active_pstore/base.rb
52
67
  - lib/active_pstore/calculations.rb
53
68
  - lib/active_pstore/collection.rb
@@ -57,12 +72,24 @@ files:
57
72
  - lib/active_pstore/dynamic_matchers.rb
58
73
  - lib/active_pstore/errors.rb
59
74
  - lib/active_pstore/finder_methods.rb
75
+ - lib/active_pstore/generators/active_pstore/config/config_generator.rb
76
+ - lib/active_pstore/generators/active_pstore/config/template/active_pstore.yml
77
+ - lib/active_pstore/generators/active_pstore/model/model_generator.rb
78
+ - lib/active_pstore/generators/active_pstore/model/templates/model.rb.tt
79
+ - lib/active_pstore/generators/active_pstore_generator.rb
60
80
  - lib/active_pstore/inheritance.rb
61
81
  - lib/active_pstore/model_schema.rb
62
82
  - lib/active_pstore/persistence.rb
63
83
  - lib/active_pstore/query_methods.rb
64
84
  - lib/active_pstore/querying.rb
85
+ - lib/active_pstore/railtie.rb
65
86
  - lib/active_pstore/version.rb
87
+ - lib/rails/active_pstore.rb
88
+ - lib/rails/generators/active_pstore/config/config_generator.rb
89
+ - lib/rails/generators/active_pstore/config/templates/active_pstore.yml
90
+ - lib/rails/generators/active_pstore/model/model_generator.rb
91
+ - lib/rails/generators/active_pstore/model/templates/model.rb.tt
92
+ - lib/rails/generators/active_pstore_generator.rb
66
93
  homepage: http://github.com/koic/active_pstore
67
94
  licenses:
68
95
  - MIT