ActiveRecord extension to make all active record properties private by default
Ruby
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.gitignore
.rspec
Gemfile
Guardfile
README.md
Rakefile
db.yml
make-private.gemspec
skratch.rb

README.md

make-private

make-private is an ActiveRecord extension that will make all your active record properties private and give you control over what is private and what should be public.

Why make-private

By default active record makes all properties and associations public which does make it faster to develop with but breaks encapsulation by default. make-private has been developed to bring back encapsulation to active record model.

##Install

gem install make-private

Status

make-private is currently in development

Example

To use make-private private you simply have to include the module in your model, simple.

require 'make-private'

class BusinessModel < ActiveRecord::Base
  #a_property: string
  include MakePrivate

end

business_model = BusinessModel.new
business_model.a_property # This will throw a NoMethodError exception

Properties can be set as normal from within the model

require 'make-private'

class BusinessModel < ActiveRecord::Base
  #a_property: string
  include MakePrivate

  def do_something_useful parameter
    ##some logic
    self.a_property = parameter
  end

end

If you require to make a property publicly readable set the method to public

require 'make-private'

class BusinessModel < ActiveRecord::Base
  #a_property: string
  include MakePrivate

  public :a_property
end

business_model = BusinessModel.new
business_model.a_property # This will no longer throw a NoMethodError exception
business_model.a_property = "something interesting" # This will still throw a NoMethodError exception

Similarly if you really really really need to make the property setter public.

require 'make-private'

class BusinessModel < ActiveRecord::Base
  #a_property: string
  include MakePrivate

  public :a_property, :a_property=
end

business_model = BusinessModel.new
business_model.a_property # This will no longer throw a NoMethodError exception
business_model.a_property = "something interesting" # This will not throw a NoMethodError exception

##Notes

Please send any questions, comments or feedback to pythonandchips{at}gmail.com.

Cheers Colin