Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

fixed_model

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fixed_model

  • 0.0.1
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Fixed Model

Fixed Models act like ActiveRecord models, but they are immutable and read from data files.

Sometimes we need static data in our applications. It can often be modeled as models in the MVC pattern. Instead of storing such data in the database, it can be useful to store the data in simple datafiles.

This has several advantages:

  • It makes it easier for developers to quickly inspect and edit the data.
  • It is trivial to make sure the data is never modified.
  • It makes it easier to make assumptions about what records exists.

Installing

Include gem fixed_model in your Gemfile and run bundle install

Usage

To use a FixedModel, inherit from FixedModel::Base:

class Country < FixedModel::Base
  
end

The model will read from config/fixed_models/countries.yml, an example of such a file could be:

---
denmark:
  name: Denmark
  capital: Copenhagen

england:
  name: England
  language: English
  capital: London
  center:
    - 53.562925
    - 1.806361
  features:
    - :drive_on_left_side
  cities:
    :london:
      :name: London
      :status: :capital

The outermost keys (in this case denmark and england will be discarded. They are only used as primary keys for merging multiple data files. (See the section "Merge files from multiple file paths").

Merge files from multiple file paths

The file paths can be changed by setting FixedModel.file_paths. The default is:

FixedModel.file_paths = ['config/fixed_models']

The data in latter file paths will override values in the former. This makes it possible to set values specific to different environments. For example, the countries.yml file from the previous section might have different names in production. The file config/fixed_models/production/countries.yml can specify that:

---
england:
  name: ENGLAND

In the case of arrays and hashes, the former files will be appended to the latter. So in the example below England would end up with both the :rail_roads and the :drive_on_left_side features. As well as the cities :london and :manchester:

---
england:
  name: England
  features:
   - :rail_roads
  cities:
    :manchester:
      :name: Manchester

The default file paths depend on the environment. In the development environment, the data will be read from config/fixed_models and config/fixed_models/development. To change this behavior, set:

FixedModel.use_environment_file_paths = false

Supported methods

Fixed Models support the most common methods used on ActiveRecord models:

Class methods:

find, first, second, third, fourth, last, all, count, each, attribute_names

Dynamic class methods. (here, attribute name is capital)

find_by_capital, find_by_capital! 

Instance methods:

persisted?, new_record?, read_attribute

Dynamic instance methods:

capital, capital?, attribute_names

FAQs

Package last updated on 28 Jul 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc