activerecord-be_readonly 0.0.1
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.
- data/README.md +46 -0
- data/Rakefile +10 -0
- data/lib/activerecord-be_readonly.rb +4 -0
- data/lib/activerecord-be_readonly/model.rb +47 -0
- data/lib/activerecord-be_readonly/now.rb +9 -0
- data/lib/activerecord-be_readonly/railtie.rb +12 -0
- data/lib/activerecord-be_readonly/version.rb +3 -0
- metadata +69 -0
data/README.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
Be Readonly for ActiveRecord 3.x/4.x and Rails 3.x/4.x
|
2
|
+
=====
|
3
|
+
|
4
|
+
Makes any ActiveRecord model become read-only in Rails with:
|
5
|
+
|
6
|
+
be_readonly
|
7
|
+
|
8
|
+
There are other gems that provide similar behavior, but from what I saw, they did either too much or too little. This one is just right, and be_readonly couldn't be much shorter to type and read without just being "readonly", but readonly would be too easily confused with related instance methods in ActiveRecord.
|
9
|
+
|
10
|
+
### What it does
|
11
|
+
|
12
|
+
Adding this gem to you bundle will add a class method called be_readonly on each model when Rails loads via a railtie.
|
13
|
+
|
14
|
+
If be_readonly is called on the class, it defines the class methods: delete and delete_all and the instance methods: before_create, before_save, before_destroy, and delete to all raise a ActiveRecord::ReadOnlyRecord error. It also defines the instance method readonly? to return true, which disables a lot that tries to create and update in ActiveRecord.
|
15
|
+
|
16
|
+
### Setup
|
17
|
+
|
18
|
+
In your ActiveRecord/Rails 3.0+ project, add this to your Gemfile:
|
19
|
+
|
20
|
+
gem 'activerecord-be_readonly'
|
21
|
+
|
22
|
+
For the development version:
|
23
|
+
|
24
|
+
gem 'activerecord-be_readonly', :git => 'git://github.com/garysweaver/activerecord-be_readonly.git'
|
25
|
+
|
26
|
+
Then run:
|
27
|
+
|
28
|
+
bundle install
|
29
|
+
|
30
|
+
### Usage
|
31
|
+
|
32
|
+
In your model just include this, preferably somewhere noticeable like at the top:
|
33
|
+
|
34
|
+
be_readonly
|
35
|
+
|
36
|
+
### Using without Rails
|
37
|
+
|
38
|
+
Or if you are off-rails, but use ActiveRecord, just do this in the model class:
|
39
|
+
|
40
|
+
include BeReadonly::Now
|
41
|
+
|
42
|
+
### License
|
43
|
+
|
44
|
+
Copyright (c) 2012 Gary S. Weaver, released under the [MIT license][lic].
|
45
|
+
|
46
|
+
[lic]: http://github.com/garysweaver/activerecord-be_readonly/blob/master/LICENSE
|
data/Rakefile
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
module BeReadonly
|
2
|
+
module Model
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
def be_readonly
|
10
|
+
extend BeReadonlyClassMethods # intentionally not in ClassMethods which is automatically extended via ActiveSupport::Concern
|
11
|
+
include BeReadonlyInstanceMethods # intentionally not just InstanceMethods as those would be automatically included via ActiveSupport::Concern
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module BeReadonlyClassMethods
|
16
|
+
def delete(id_or_array)
|
17
|
+
raise ActiveRecord::ReadOnlyRecord
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete_all(conditions = nil)
|
21
|
+
raise ActiveRecord::ReadOnlyRecord
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
module BeReadonlyInstanceMethods
|
26
|
+
def readonly?
|
27
|
+
return true
|
28
|
+
end
|
29
|
+
|
30
|
+
def before_create
|
31
|
+
raise ActiveRecord::ReadOnlyRecord
|
32
|
+
end
|
33
|
+
|
34
|
+
def before_save
|
35
|
+
raise ActiveRecord::ReadOnlyRecord
|
36
|
+
end
|
37
|
+
|
38
|
+
def before_destroy
|
39
|
+
raise ActiveRecord::ReadOnlyRecord
|
40
|
+
end
|
41
|
+
|
42
|
+
def delete
|
43
|
+
raise ActiveRecord::ReadOnlyRecord
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'activerecord-be_readonly'
|
2
|
+
|
3
|
+
module BeReadonly
|
4
|
+
class Railtie < Rails::Railtie
|
5
|
+
initializer "activerecord-be_readonly.active_record" do
|
6
|
+
ActiveSupport.on_load(:active_record) do
|
7
|
+
# ActiveRecord::Base gets new behavior
|
8
|
+
include BeReadonly::Model # ActiveSupport::Concern
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
metadata
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: activerecord-be_readonly
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Gary S. Weaver
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-08-22 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activerecord
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
description: Makes read-only models easier to implement in ActiveRecord 3.x/4.x.
|
31
|
+
email:
|
32
|
+
- garysweaver@gmail.com
|
33
|
+
executables: []
|
34
|
+
extensions: []
|
35
|
+
extra_rdoc_files: []
|
36
|
+
files:
|
37
|
+
- lib/activerecord-be_readonly/model.rb
|
38
|
+
- lib/activerecord-be_readonly/now.rb
|
39
|
+
- lib/activerecord-be_readonly/railtie.rb
|
40
|
+
- lib/activerecord-be_readonly/version.rb
|
41
|
+
- lib/activerecord-be_readonly.rb
|
42
|
+
- Rakefile
|
43
|
+
- README.md
|
44
|
+
homepage: https://github.com/garysweaver/activerecord-be_readonly
|
45
|
+
licenses:
|
46
|
+
- MIT
|
47
|
+
post_install_message:
|
48
|
+
rdoc_options: []
|
49
|
+
require_paths:
|
50
|
+
- lib
|
51
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ! '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
requirements: []
|
64
|
+
rubyforge_project:
|
65
|
+
rubygems_version: 1.8.24
|
66
|
+
signing_key:
|
67
|
+
specification_version: 3
|
68
|
+
summary: Easy read-only models for ActiveRecord 3.x/4.x.
|
69
|
+
test_files: []
|