rails_static_record 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +60 -11
- data/Rakefile +1 -5
- data/lib/{static_record.rb → rails_static_record.rb} +4 -0
- data/lib/static_record/base.rb +1 -1
- data/lib/static_record/gateway_model.rb +12 -0
- data/lib/static_record/version.rb +1 -1
- data/spec/dummy/app/models/category.rb +1 -1
- data/spec/dummy/config/application.rb +1 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60240b0ebf3743533a9112b72f859519c8712c5b
|
4
|
+
data.tar.gz: b901732caddbbfa2459b70c911e351f5cafbf51a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07dd56083cb89e6349bc722e3416e9fd328d98fbf08e3e758c41ece280b2e11bface8fc23e9a12c28a4f30c30415023ac2b279df2e9d1ebd1faf95e817f30ff4
|
7
|
+
data.tar.gz: 2b28a32ae1432a8db122899b79a3b145e47940d94cd0c192cbfcd80792f20ec4bae1db50fe7dad9927b4713db7b68761bc1daf8e3877b1ede036893164ff8ad3
|
data/README.md
CHANGED
@@ -4,6 +4,23 @@ locally, is useful for models like categories to store data
|
|
4
4
|
without have to access to database. Is based on ActiveRecord
|
5
5
|
and it permits relations with native models.
|
6
6
|
|
7
|
+
## Installation
|
8
|
+
Add this line to your application's Gemfile:
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
gem 'static_record'
|
12
|
+
```
|
13
|
+
|
14
|
+
And then execute:
|
15
|
+
```bash
|
16
|
+
$ bundle
|
17
|
+
```
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
```bash
|
21
|
+
$ gem install static_record
|
22
|
+
```
|
23
|
+
|
7
24
|
## Usage
|
8
25
|
You can create your own static model creating a ruby file in
|
9
26
|
_app/models_. Remember name your model according to the rails convention.
|
@@ -16,6 +33,15 @@ class Category < StaticRecord::Base
|
|
16
33
|
end
|
17
34
|
```
|
18
35
|
|
36
|
+
Or if you have your model static data in a custom directory, you can select it.
|
37
|
+
```ruby
|
38
|
+
# app/models/category.rb
|
39
|
+
|
40
|
+
class Category < StaticRecord::Base
|
41
|
+
file '/path/to/file.yml'
|
42
|
+
end
|
43
|
+
```
|
44
|
+
|
19
45
|
Also you have to create the model data in *_db/static_*, the name of the YAML
|
20
46
|
file is by default the name of the table for model. In other words, if your
|
21
47
|
model name is category, you'll have to name your data file as categories.yml.
|
@@ -56,25 +82,48 @@ Category.find 4, 1
|
|
56
82
|
|
57
83
|
```
|
58
84
|
|
59
|
-
|
60
|
-
Add this line to your application's Gemfile:
|
85
|
+
Use find_by or find_by! like ActionRecord.
|
61
86
|
|
62
87
|
```ruby
|
63
|
-
|
64
|
-
|
88
|
+
# Find by attribute without throwing an error.
|
89
|
+
Category.find_by name: 'Is not stored'
|
90
|
+
# => []
|
91
|
+
|
92
|
+
# Find by attribute without throwing an error.
|
93
|
+
Category.find_by! name: 'Is not stored'
|
94
|
+
# =>
|
95
|
+
# StaticRecord::RecordNotFound: Couldn't find categories like name as Is not
|
96
|
+
# stored
|
97
|
+
|
98
|
+
# Also you can use dynamic methods.
|
99
|
+
Category.find_by_name 'Is not stored'
|
100
|
+
# => []
|
65
101
|
|
66
|
-
And then execute:
|
67
|
-
```bash
|
68
|
-
$ bundle
|
69
102
|
```
|
70
103
|
|
71
|
-
|
72
|
-
```
|
73
|
-
|
104
|
+
Use array methods it's possible too.
|
105
|
+
```ruby
|
106
|
+
Category.all
|
107
|
+
|
108
|
+
Category.first
|
109
|
+
|
110
|
+
Category.second
|
111
|
+
|
112
|
+
Category.last
|
113
|
+
|
114
|
+
Category.count
|
115
|
+
|
116
|
+
# Etc...
|
117
|
+
|
74
118
|
```
|
75
119
|
|
76
120
|
## Contributing
|
77
|
-
|
121
|
+
If you want to contribute with the project, you can fork this repo and create
|
122
|
+
a pull request with your features or fixes. The code is written using the ruby
|
123
|
+
style guide. Read this [article](https://github.com/bbatsov/ruby-style-guide)
|
124
|
+
before contribute to this project.
|
125
|
+
|
126
|
+
Also you can follow me on Twitter [@molayab_](http://twitter.com/molayab_).
|
78
127
|
|
79
128
|
## License
|
80
129
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'rubygems'
|
1
2
|
begin
|
2
3
|
require 'bundler/setup'
|
3
4
|
rescue LoadError
|
@@ -14,11 +15,6 @@ RDoc::Task.new(:rdoc) do |rdoc|
|
|
14
15
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
16
|
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
18
|
require 'bundler/gem_tasks'
|
23
19
|
|
24
20
|
require 'rake/testtask'
|
@@ -13,3 +13,7 @@ require 'static_record/active_record'
|
|
13
13
|
# require 'static_model/comparable'
|
14
14
|
require 'static_record/loader_file'
|
15
15
|
require 'static_record/base'
|
16
|
+
|
17
|
+
if defined?(Rails) && Rails.root
|
18
|
+
StaticRecord::Base.file_path = File.join(Rails.root, 'db', 'static')
|
19
|
+
end
|
data/lib/static_record/base.rb
CHANGED
@@ -32,6 +32,18 @@ module StaticRecord
|
|
32
32
|
context
|
33
33
|
end
|
34
34
|
|
35
|
+
def find_by!(hash)
|
36
|
+
context = find_by hash
|
37
|
+
key, value = hash.first
|
38
|
+
|
39
|
+
raise RecordNotFound.new(
|
40
|
+
"Couldn't find #{to_s.tableize} like #{key} as #{value}",
|
41
|
+
to_s.tableize,
|
42
|
+
'id'
|
43
|
+
) if context.empty?
|
44
|
+
context
|
45
|
+
end
|
46
|
+
|
35
47
|
private
|
36
48
|
|
37
49
|
def records
|
@@ -3,7 +3,7 @@ require_relative 'boot'
|
|
3
3
|
require 'rails/all'
|
4
4
|
|
5
5
|
Bundler.require(*Rails.groups)
|
6
|
-
require "
|
6
|
+
require "rails_static_record"
|
7
7
|
|
8
8
|
module Dummy
|
9
9
|
class Application < Rails::Application
|
@@ -12,4 +12,3 @@ module Dummy
|
|
12
12
|
# -- all .rb files in that directory are automatically loaded.
|
13
13
|
end
|
14
14
|
end
|
15
|
-
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_static_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mateo Olaya Bernal
|
@@ -72,7 +72,7 @@ files:
|
|
72
72
|
- MIT-LICENSE
|
73
73
|
- README.md
|
74
74
|
- Rakefile
|
75
|
-
- lib/
|
75
|
+
- lib/rails_static_record.rb
|
76
76
|
- lib/static_record/active_record.rb
|
77
77
|
- lib/static_record/base.rb
|
78
78
|
- lib/static_record/errors.rb
|
@@ -156,7 +156,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
159
|
+
version: 2.1.0
|
160
160
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
161
|
requirements:
|
162
162
|
- - ">="
|