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.
@@ -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
@@ -0,0 +1,10 @@
1
+ require 'rake/testtask'
2
+
3
+ Rake::TestTask.new(:test) do |t|
4
+ t.libs << 'test'
5
+ t.test_files = FileList['test/**/*_test.rb']
6
+ t.verbose = true
7
+ end
8
+
9
+ desc "Run tests"
10
+ task :default => :test
@@ -0,0 +1,4 @@
1
+ require 'activerecord-be_readonly/version'
2
+ require 'activerecord-be_readonly/model'
3
+ require 'activerecord-be_readonly/now'
4
+ require 'activerecord-be_readonly/railtie' if defined?(Rails)
@@ -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,9 @@
1
+ module BeReadonly
2
+ module Now
3
+ extend ActiveSupport::Concern
4
+ included do
5
+ include BeReadonly::Model
6
+ be_readonly
7
+ end
8
+ end
9
+ 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
@@ -0,0 +1,3 @@
1
+ module BeReadonly
2
+ VERSION = '0.0.1'
3
+ 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: []