active_pstore 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ddecb64b2c35e955f66716f4d39988c48d4e7bc
4
- data.tar.gz: 951efa2d736bbef69a07826bd741f4d2f9742299
3
+ metadata.gz: 2e0846e7c7c7a6853ef77ea26f6ae2aa498d63b7
4
+ data.tar.gz: f12f60b9965364eca7eb3787d511a9f380fcfc75
5
5
  SHA512:
6
- metadata.gz: 00ac7cace452785391cb7cc434041f0924521a6af5761de04da193bdefbd3779d72b0d50a415e37b9a3702e96abb6f7d38de828373f5350f771148a3da2aade6
7
- data.tar.gz: 2db3e10910cd48e568f6abeb37f7bb2b426b3a5355cc7c4f2de8d49f5007b5aaf7dfa8b1c353b1a88d8f2caa110df7512fbcccc8399603de83a85c2701db3c1e
6
+ metadata.gz: 36c9f10ad414bc43ca0949fac8fbafea9ac20eb6189eaa1a7d3f412fb67abbedd28cc1f1ffe21cb58a8316c9e2060afd351592183d8d6257422eebdc19c53908
7
+ data.tar.gz: faf2198901dffda085992ca707df9c00c4f78377b6941a6929ac6d36f1ca7a9c777f567043f0ef8a7057517a9c549ad9d76992d306564c6b1e41ada4dab522b1
data/README.ja.md CHANGED
@@ -108,6 +108,46 @@ Artist.where(birth_date: Date.new(1948, 12, 3)..Date.new(1956, 12, 6))
108
108
 
109
109
  続きは[テストコード](https://github.com/koic/active_pstore/tree/master/spec)をご参照ください。
110
110
 
111
+ ## Integration with Rails
112
+
113
+ Active PStore では以下のジェネレータを用意しています。
114
+
115
+ ### Generate config file
116
+
117
+ 以下の行をRailsアプリケーションで実行してください。
118
+
119
+ ```
120
+ bundle exec rails g active_pstore:config
121
+ ```
122
+
123
+ config/active_pstore.yml が生成されます。
124
+
125
+ config/database.yml をもちいて Active PStore が pstore を使った保存先の情報を指定します。
126
+
127
+ ```
128
+ development:
129
+ database: db/active_pstore_development.yml
130
+ ```
131
+
132
+ ### Generate model file
133
+
134
+ 以下の行をRailsアプリケーションで実行してください。
135
+
136
+ ```
137
+ bundle exec rails g active_pstore:model artist name associated_act instrument birth_date
138
+ ```
139
+
140
+ app/models/artist.rb が生成されます。
141
+
142
+ ```ruby
143
+ class Artist < ActivePStore::Base
144
+ attr_accessor :name
145
+ attr_accessor :associated_act
146
+ attr_accessor :instrument
147
+ attr_accessor :birth_date
148
+ end
149
+ ```
150
+
111
151
  ## REQUIREMENTS
112
152
 
113
153
  * [Active Model](https://github.com/rails/rails/tree/master/activemodel)
data/README.md CHANGED
@@ -109,19 +109,28 @@ see [spec codes](https://github.com/koic/active_pstore/tree/master/spec) for mor
109
109
 
110
110
  ## Integration with Rails
111
111
 
112
+ This library has following generators.
113
+
112
114
  ### Generate config file
113
115
 
114
- Execute these lines to your Rails application directory:
116
+ Execute these lines in your Rails application directory:
115
117
 
116
118
  ```
117
119
  bundle exec rails g active_pstore:config
118
120
  ```
119
121
 
120
- And then create config/active_pstore.yml.
122
+ And then create config/active_pstore.yml
123
+
124
+ Using the config/database.yml file you can specify all the information needed to access your pstore database:
125
+
126
+ ```
127
+ development:
128
+ database: db/active_pstore_development.yml
129
+ ```
121
130
 
122
131
  ### Generate model file
123
132
 
124
- Execute these lines to your Rails application directory:
133
+ Execute these lines in your Rails application directory:
125
134
 
126
135
  ```
127
136
  bundle exec rails g active_pstore:model artist name associated_act instrument birth_date
@@ -0,0 +1,27 @@
1
+ module ActivePStore
2
+ module Application
3
+ class Configuration
4
+ # Loads and returns the entire raw configuration of database from
5
+ # values stored in `config/active_pstore.yml`.
6
+ def database_configuration
7
+ yaml = Pathname.new('config/active_pstore.yml')
8
+
9
+ config = if yaml && yaml.exist?
10
+ require 'yaml'
11
+ require 'erb'
12
+ YAML.load(ERB.new(yaml.read).result) || {}
13
+ else
14
+ raise 'Could not load database configuration. No such file - config/active_pstore.yml'
15
+ end
16
+
17
+ config
18
+ rescue Psych::SyntaxError => e
19
+ raise "YAML syntax error occurred while parsing config/active_pstore.yml. " \
20
+ "Please note that YAML must be consistently indented using spaces. Tabs are not allowed. " \
21
+ "Error: #{e.message}"
22
+ rescue => e
23
+ raise e, "Cannot load `Rails::ActivePStore::Railtie.database_configuration`:\n#{e.message}", e.backtrace
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,9 +1,15 @@
1
1
  module ActivePStore
2
2
  module FinderMethods
3
- def find(id)
4
- id = id.is_a?(ActivePStore::Base) ? id.id : id
3
+ def find(*ids)
4
+ ids = ids.map {|id| id.is_a?(ActivePStore::Base) ? id.id : id }
5
5
 
6
- all.find {|obj| obj.id == id } || (raise ActivePStore::RecordNotFound, "Couldn't find #{self} with 'id'=#{id}")
6
+ _find(*ids).tap do |ret|
7
+ if ids.size == 1
8
+ raise ActivePStore::RecordNotFound, "Couldn't find #{self} with 'id'=#{ids.first}" if ret.nil?
9
+ else
10
+ raise ActivePStore::RecordNotFound, "Couldn't find all #{self} with 'id': (#{ids.join(', ')}) (found #{ret.size} results, but was looking for #{ids.size})" unless ret.size == ids.size
11
+ end
12
+ end
7
13
  end
8
14
 
9
15
  def find_by(conditions = {})
@@ -25,5 +31,19 @@ module ActivePStore
25
31
  def take(limit = nil)
26
32
  limit ? all.take(limit) : first
27
33
  end
34
+
35
+ private
36
+
37
+ def _find(*ids)
38
+ if ids.size == 1
39
+ id = ids.first
40
+
41
+ all.find {|obj| obj.id == id }
42
+ else
43
+ ids.each_with_object([]) {|id, ret|
44
+ ret << _find(id)
45
+ }.compact
46
+ end
47
+ end
28
48
  end
29
49
  end
@@ -7,7 +7,8 @@ module ActivePStore
7
7
 
8
8
  conditions.each do |key, value|
9
9
  ret = ret.select {|obj|
10
- if value.is_a? Range
10
+ case value
11
+ when Array, Range
11
12
  value.include?(obj.__send__(key))
12
13
  else
13
14
  obj.__send__(key) == value
@@ -11,33 +11,15 @@ module Rails
11
11
  config.action_dispatch.rescue_responses.merge!(rescue_responses)
12
12
  end
13
13
 
14
- # Loads and returns the entire raw configuration of database from
15
- # values stored in `config/active_pstore.yml`.
16
- def database_configuration
17
- yaml = Pathname.new('config/active_pstore.yml')
18
-
19
- config = if yaml && yaml.exist?
20
- require 'yaml'
21
- require 'erb'
22
- YAML.load(ERB.new(yaml.read).result) || {}
23
- else
24
- raise 'Could not load database configuration. No such file - config/active_pstore.yml'
25
- end
26
-
27
- config
28
- rescue Psych::SyntaxError => e
29
- raise "YAML syntax error occurred while parsing config/active_pstore.yml. " \
30
- "Please note that YAML must be consistently indented using spaces. Tabs are not allowed. " \
31
- "Error: #{e.message}"
32
- rescue => e
33
- raise e, "Cannot load `Rails::ActivePStore::Railtie.database_configuration`:\n#{e.message}", e.backtrace
34
- end
35
-
36
14
  initializer 'active_pstore.initialize_database' do
37
15
  config_file = Rails.root.join('config', 'active_pstore.yml')
38
16
 
39
17
  if config_file.file?
40
- database = database_configuration.fetch(ENV['RAILS_ENV'] || 'development').fetch('database')
18
+ require 'active_pstore/application/configuration'
19
+
20
+ configuration = ::ActivePStore::Application::Configuration.new
21
+
22
+ database = configuration.database_configuration.fetch(ENV['RAILS_ENV'] || 'development').fetch('database')
41
23
 
42
24
  ::ActivePStore::Base.establish_connection(database: database)
43
25
  end
@@ -1,3 +1,3 @@
1
1
  module ActivePStore
2
- VERSION = '0.5.0'
2
+ VERSION = '0.5.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_pstore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
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-09-16 00:00:00.000000000 Z
11
+ date: 2015-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: generator_spec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: railties
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: rspec
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -62,6 +90,7 @@ files:
62
90
  - README.ja.md
63
91
  - README.md
64
92
  - lib/active_pstore.rb
93
+ - lib/active_pstore/application/configuration.rb
65
94
  - lib/active_pstore/attribute_methods.rb
66
95
  - lib/active_pstore/base.rb
67
96
  - lib/active_pstore/calculations.rb