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

core_data_motion

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

core_data_motion

  • 0.0.1
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

CoreData Motion

This project aims to provide a ruby-like way of creating CoreData models using a DSL, avoiding the need to create them using the XCode GUI builder.

##Installation

###Using bundler:

If you are using bundler for managing dependencies, you will need to add the gem to your project's Gemfile:

# Gemfile
source "https://rubygems.org"

gem "rake"
gem "core_data_motion"
# Some other gems for your poject

and setup your Rakefile to properly require bundler's dependencies:

# -*- coding: utf-8 -*-
# Rakefile
$:.unshift("/Library/RubyMotion/lib")
require 'motion/project/template/ios'
require 'rubygems'
require 'bundler'

Bundler.setup
Bundler.require

Motion::Project::App.setup do |app|
  # Use `rake config' to see complete project settings.
  app.name = 'your_app_name'

  app.frameworks += %w(CoreData)

  app.files.unshift(*Dir.glob(File.join(app.project_dir, 'app/lib/**/*.rb')))
end

###Without bundler

If you are not managing dependencies with bundler, you will need to install the gem with:

gem install core_data_motion

And then require it in your Rakefile:

# -*- coding: utf-8 -*-
# Rakefile
$:.unshift("/Library/RubyMotion/lib")
require 'motion/project/template/ios'
require 'rubygems'
require 'core_data_motion'

Motion::Project::App.setup do |app|
  # Use `rake config' to see complete project settings.
  app.name = 'your_app_name'

  app.frameworks += %w(CoreData)

  app.files.unshift(*Dir.glob(File.join(app.project_dir, 'app/lib/**/*.rb')))
end

##Usage example:

Create a file under your settings/ directory and define the ModelDefinition class as follows:

class ModelDefinition < CDM::EntityDefinition
  def define_model
    create_entity :project do |e|
      e.string    :name
      e.string    :description_text
      e.date      :start_date
      e.double    :budget
    end

    create_entity :task do |e|
      e.int16     :project_id, optional: false
      e.string    :name
      e.string    :details
    end

    create_entity :comment do |e|
      e.int16     :owner_id, optional: false
      e.string    :owner_type
      e.string    :content
    end
  end
end

Run the following rake task to create the files needed to create the data model:

rake coredata:setup

If you are using MagicalRecord, you can initialize your database in your application delegate by running:

MagicalRecord.setupCoreDataStackWithStoreNamed('database.sqlite')

You can use any CoreData wrapper you want (or none at all) to query for records and save them to the device's local database.

Available data-types

The available data types in a CoreData model are:

  • Binary e.binary :binary_field
  • Boolean e.boolean :boolean_field
  • Date e.date :date_field
  • Decimal e.decimal :decimal_field
  • Double e.double :double_field
  • Float e.float :float_field
  • Integer 16 e.int16 :int_field
  • Integer 32 e.int32 :int_field
  • Integer 64 e.int64 :int_field
  • String e.string :string_field
  • Transformable e.transformable :transformable_field

Contributing

This is a work in progress and help is greatly appreciated! If you want to add a feature, fix a bug or help with documentation, you are very welcome to do so. Just follow the usual way of contributing:

  • Fork the repo.
  • Create a feature branch.
  • Make tests for the feature you want to add.
  • Make the tests pass.
  • Send a pull request.

FAQs

Package last updated on 06 Aug 2013

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