summaryrefslogtreecommitdiff
path: root/Development.md
blob: 53942bb86d920955a17f2e010188824940231f67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Leap Web Core
============

This gem provides the generic helpers shared across the different engines that make up leap_web.


Creating a new engine
===================

Rails plugin new
----------------

Create the basic tree structure for an engine using
<code>
rails plugin new ENGINE_NAME -O --full
</code>

'''-O''' will skip active record and not add a dev dependency on sqlite.
'''-full''' will create a directory structure with config/routes and app and a basic engine file.

See http://guides.rubyonrails.org/engines.html for more general info about engines.

Require Leap Web Core
---------------------

You need to add leap_web_core to your .gemspec:
<code>
  Gem::Specification.new do |s|
    ...
    s.add_dependency "rails" ...
    s.add_dependency "leap_web_core", "~> 0.0.1"
  end
</code>

You also need to require it before you define your engine in lib/my_engine/engine.rb:
<code>
require "leap_web_core"

module MyEngine
  class Engine < ::Rails::Engine
    ...
  end
end
</code>

Require UI Gems
---------------

Leap Web Core provides a basic set of UI gems that should be used accross the engines. These include haml, sass, coffeescript, uglifier, bootstrap-sass, jquery and simple_form.

Do you want to add views, javascript and the like to your engine? Then you should use the common gems. In order to do so you need to add them to your gemspec:

<code>
  require "my_engine/version"
  require "leap_web_core/dependencies"
 
  ...

  Gem::Specification.new do |s|
    ...
    s.add_dependency "rails" ...
    s.add_dependency "leap_web_core", "~> 0.0.1"

    LeapWebCore::Dependencies.add_ui_gems_to_spec(s)
  end
</code>

You also need to require them before you define your engine in lib/my_engine/engine.rb:
<code>
require "leap_web_core"
LeapWebCore::Dependencies.require_ui_gems

module MyEngine
  class Engine < ::Rails::Engine
    ...
  end
end
</code>


Creating Models
===============

You can use the normal rails generators to create models. Since you required the leap_web_core gem you will be using CouchRest::Model. So your models inherit from CouchRest::Model::Base.
http://www.couchrest.info/model/definition.html has some good first steps for setting up the model.
CouchRest Model behaved strangely when using a model without a design block. So make sure to define an initial view: http://www.couchrest.info/model/view_objects.html .

From that point on you should be able to use the standart persistance and querying methods such as create, find, destroy and so on.