elise 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <projectDescription>
3
+ <name>elise</name>
4
+ <comment></comment>
5
+ <projects>
6
+ </projects>
7
+ <buildSpec>
8
+ <buildCommand>
9
+ <name>com.aptana.ide.core.unifiedBuilder</name>
10
+ <arguments>
11
+ </arguments>
12
+ </buildCommand>
13
+ </buildSpec>
14
+ <natures>
15
+ <nature>org.radrails.rails.core.railsnature</nature>
16
+ <nature>com.aptana.ruby.core.rubynature</nature>
17
+ </natures>
18
+ </projectDescription>
@@ -0,0 +1,4 @@
1
+ elise
2
+ =====
3
+
4
+ Authorization Gem for Ruby on Rails with administrative interface. (like the_role gem)
@@ -0,0 +1,21 @@
1
+ require 'rake/testtask'
2
+
3
+ Rake::TestTask.new do |test|
4
+ test.pattern = 'test/**/*_test.rb'
5
+ test.libs << 'test'
6
+ end
7
+
8
+
9
+ begin
10
+ require "jeweler"
11
+ Jeweler::Tasks.new do |gem|
12
+ gem.name = "elise"
13
+ gem.summary = "Elise is a devise like gem witch manage users according to databaseFormalizer"
14
+ gem.email = "christophe.desclaux@atos.net"
15
+ gem.authors = ["christophe Desclaux"]
16
+ gem.files = Dir["{lib}/**/*", "{app}/**/*", "{public}/**/*", "{config}/**/*"]
17
+ end
18
+ Jeweler::GemcutterTasks.new
19
+ rescue
20
+ puts "Jeweler or dependency not available."
21
+ end
@@ -0,0 +1,34 @@
1
+ module Elise
2
+ class AccountController < ApplicationController
3
+ # GET /login
4
+ def login
5
+ account = Account.authenticate(params[:login], params[:password])
6
+ if account
7
+ session[:account_id] = account.id
8
+ session[:roleId] = account.get_roles[0].id
9
+ session[:roleLabel] = account.get_roles[0].label
10
+ redirect_to :back, :flash => { :notice => "Logged in!" }
11
+ else
12
+ redirect_to elise_url, :flash => { :error => "Invalid login or password!"}
13
+ end
14
+ end
15
+
16
+ # GET /logout
17
+ def logout
18
+ session[:account_id] = nil
19
+ session[:roleId] = nil
20
+ session[:roleLabel] = nil
21
+ redirect_to :back, :flash => { :notice => "Logged out!" }
22
+ end
23
+
24
+ # GET /role
25
+ def role
26
+ session[:roleId] = params[:roleId]
27
+ session[:roleLabel] = params[:roleLabel]
28
+ redirect_to :back, :flash => { :notice => "Role changed!" }
29
+ end
30
+ def index
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,90 @@
1
+ module Elise
2
+ class FeaturesController < ApplicationController
3
+ # GET /features
4
+ # GET /features.xml
5
+
6
+ def index
7
+ @features = Feature.all
8
+
9
+ respond_to do |format|
10
+ format.html # index.html.erb
11
+ format.xml { render :xml => @features }
12
+ end
13
+ end
14
+
15
+ # GET /features/1
16
+ # GET /features/1.xml
17
+ def show
18
+ @feature = Feature.find(params[:id])
19
+
20
+ respond_to do |format|
21
+ format.html # show.html.erb
22
+ format.xml { render :xml => @feature }
23
+ end
24
+ end
25
+
26
+ # GET /features/new
27
+ # GET /features/new.xml
28
+ def new
29
+ @feature = Feature.new
30
+
31
+ respond_to do |format|
32
+ format.html # new.html.erb
33
+ format.xml { render :xml => @feature }
34
+ end
35
+ end
36
+
37
+ # GET /features/1/edit
38
+ def edit
39
+ @feature = Feature.find(params[:id])
40
+ end
41
+
42
+ # POST /features
43
+ # POST /features.xml
44
+ def create
45
+ @feature = Feature.new(params[:feature])
46
+
47
+
48
+ respond_to do |format|
49
+ if @feature.save
50
+ format.html { redirect_to(@feature, :notice => 'Feature was successfully created.') }
51
+ format.xml { render :xml => @feature, :status => :created, :location => @feature }
52
+ else
53
+ format.html { render :action => "new" }
54
+ format.xml { render :xml => @feature.errors, :status => :unprocessable_entity }
55
+ end
56
+ end
57
+ end
58
+
59
+ # PUT /features/1
60
+ # PUT /features/1.xml
61
+ def update
62
+ @feature = Feature.find(params[:id])
63
+ params[:elise_feature].each do |key,val|
64
+ map = {"rolesList" => {"roleId0000000000000" => key}}
65
+ if val == '1'
66
+ Databaseformalizer::EntitiesHelper.setAttrVals(map, @feature)
67
+ elsif val == '0'
68
+ Databaseformalizer::EntitiesHelper.removeAttrVals(map, @feature)
69
+ end
70
+ end
71
+
72
+ respond_to do |format|
73
+ format.html { redirect_to(elise_features_url) }# index.html.erb
74
+ format.xml { render :xml => @features }
75
+ end
76
+ end
77
+
78
+ # DELETE /features/1
79
+ # DELETE /features/1.xml
80
+ def destroy
81
+ @feature = Feature.find(params[:id])
82
+ @feature.destroy
83
+
84
+ respond_to do |format|
85
+ format.html { redirect_to(elise_features_url) }
86
+ format.xml { head :ok }
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,5 @@
1
+ module Elise
2
+ module AccountHelper
3
+
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ module Elise
2
+ module FeaturesHelper
3
+ end
4
+ end
@@ -0,0 +1,78 @@
1
+ module Elise
2
+ class Account < User
3
+
4
+ attr_accessor :cur_roleId, :cur_roleLabel
5
+ @cur_roleId = nil
6
+ @cur_roleLabel = nil
7
+
8
+ def self.authenticate(login, password)
9
+ user = Account.all.find_all{|i| i.login == login}[0]
10
+ if user && user.cryptedPassword == password
11
+ user
12
+ else
13
+ nil
14
+ end
15
+ end
16
+
17
+ def is_logged
18
+ return self.entity_def_id != nil
19
+ end
20
+
21
+ def self.current_user(session)
22
+ if session[:account_id] != nil
23
+ account = Account.find(session[:account_id])
24
+ account.cur_roleId = session[:roleId]
25
+ account.cur_roleLabel = session[:roleLabel]
26
+ return account
27
+ else
28
+ return Account.new
29
+ end
30
+ end
31
+
32
+ def get_roles
33
+ rolesList = Array.new
34
+
35
+ #check if there is one or more roles
36
+ if self.roleId.is_a?(String)
37
+ rolesList.push(Feature.find_by_id(id))
38
+ return rolesList
39
+ end
40
+
41
+ self.roleId.each do |id|
42
+ rolesList.push(Feature.find_by_id(id))
43
+ end
44
+ rolesList
45
+ end
46
+
47
+ def can_see_feature(feature)
48
+ #check if the feature exist
49
+ return false if ! (defined? feature)
50
+
51
+ begin
52
+ #check if there is one or more roles
53
+ return self.cur_roleId == feature.roleId if feature.roleId.is_a?(String)
54
+ rescue
55
+ return false
56
+ end
57
+
58
+ #for array of roles
59
+ return feature.roleId.include?(self.cur_roleId)
60
+ end
61
+
62
+ def can_see_feature_name(featureName)
63
+ feature = Feature.find_by_label(featureName)
64
+
65
+ if feature == nil
66
+ #the feature doesn't exist, we can create an empty feature
67
+ feature = Feature.new(:label => featureName, :entity_def_id => 'Feature')
68
+ feature.save
69
+ end
70
+
71
+ return can_see_feature(feature)
72
+ end
73
+ def can_see(featureName)
74
+ return can_see_feature_name(featureName)
75
+ end
76
+ end
77
+
78
+ end
@@ -0,0 +1,9 @@
1
+ module Elise
2
+ class Feature < Databaseformalizer::Entity
3
+ acts_as_entity :Feature
4
+
5
+ def find_by_label(label)
6
+ Feature.all.find_all{|i| i.label == label}[0]
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,24 @@
1
+ <li class="dropdown">
2
+ <% if current_user.is_logged -%>
3
+ <a class="btn dropdown-toggle btn-inverse" data-toggle="dropdown" href="#" id="link_user_name">
4
+ <i class="icon-user"></i> <%= current_user.login.titleize %> (<%= current_user.cur_roleLabel%>)
5
+ <span class="caret"></span>
6
+ </a>
7
+ <ul class="dropdown-menu">
8
+ <li> <%= link_to elise_logout_path do %><i class="icon-remove"></i> Sign Out<%end%></li>
9
+ <li class="divider"></li>
10
+ <p class="nav-header">Switch role</p>
11
+ <% current_user.get_roles.each do |role|%>
12
+ <li> <%= link_to :controller => "elise/account", :action => "role",:roleLabel => role.label,:roleId => role.id do%><i class="icon-list-alt"></i> <%= role.label%><%end%></li>
13
+ <% end -%>
14
+ </ul>
15
+ <% else -%>
16
+ <span class="navbar-form pull-right">
17
+ <%= form_tag 'elise/login' do %>
18
+ <%= text_field_tag :login, "login", :class => "span2", :onfocus => "this.value=''; this.onfocus=null;" %>
19
+ <%= password_field_tag :password, "********", :class => "span2", :onfocus => "this.value=''; this.onfocus=null;" %>
20
+ <%= submit_tag 'Log In', :id => "loginbutton", :class => "btn-primary span1" %>
21
+ <% end %>
22
+ </span>
23
+ <% end -%>
24
+ </li>
@@ -0,0 +1,13 @@
1
+
2
+ <%= form_tag 'elise/login' do %>
3
+ <p>
4
+ <%= label_tag :login %><br />
5
+ <%= text_field_tag :login, params[:login] %>
6
+ </p>
7
+ <p>
8
+ <%= label_tag :password %><br />
9
+ <%= password_field_tag :password %>
10
+ </p>
11
+ <p class="button"><%= submit_tag "Log in" %></p>
12
+ <% end %>
13
+
@@ -0,0 +1,13 @@
1
+ <h1>Log in</h1>
2
+
3
+ <% if current_user.is_logged %>
4
+ Logged in as <%= current_user.login %>.<hr/>
5
+ Switch current role<ol>
6
+ <% current_user.get_roles.each do |role| %>
7
+ <li> <%= link_to :controller => "elise/account", :action => "role",:roleLabel => role.label,:roleId => role.id do%></i> <%= role.label%><%end%></li>
8
+ <%end%>
9
+ </ol>
10
+ <% else %>
11
+ <%= render 'login_form' %>
12
+ <%= link_to "Sign up", elise_logout_path %>
13
+ <% end %>
@@ -0,0 +1,58 @@
1
+ <h1>Listing features</h1>
2
+ <!--https://github.com/twitter/bootstrap/issues/1935 for a on/off button -->
3
+
4
+
5
+
6
+
7
+ <table class="table table-bordered table-condensed table-sorter table-fixed-header">
8
+ <thead class="header">
9
+ <tr>
10
+ <th>label</th>
11
+ <%Role.all.each do |role|-%>
12
+ <th><%= role.label%></th>
13
+ <%end-%>
14
+ <th></th>
15
+ </tr>
16
+ </thead>
17
+ <tbody>
18
+ <% @features.each do |feature| %>
19
+ <tr>
20
+ <td><%= feature.label %></td>
21
+ <%Role.all.each do |role|-%>
22
+ <%= form_for(feature) do |f| %>
23
+ <% isChecked = feature.attributes.include?('roleId') && feature.roleId.include?(role.id.to_s)%>
24
+ <td bgcolor="<%= isChecked ? "#468847" : "#B94A48"%>"><center style="padding-top:10px">
25
+ <% if current_user.can_see("feature.edit")%>
26
+ <%= f.check_box role.id, { :checked => isChecked,:onchange => 'this.form.submit()',:autocomplete => "off"} %>
27
+ <%end%>
28
+ </center></td>
29
+ <%end%>
30
+ <%end-%>
31
+ <td class="td-button-menu">
32
+ <div class="btn-group">
33
+ <%= link_to 'Show', databaseformalizer_entity_path(feature), :class => 'btn btn-info btn-mini' %>
34
+ <% if current_user.can_see("feature.edit")%>
35
+ <%= link_to 'Edit', edit_databaseformalizer_entity_path(feature), :class => 'btn btn-warning btn-mini' %>
36
+ <%end%>
37
+ </div>
38
+ <% if current_user.can_see("feature.delete")%>
39
+ <%= button_to "Destroy", feature, :method=>:delete, :class=>'btn btn-danger btn-mini' %>
40
+ <%end%>
41
+ </div>
42
+ </td>
43
+ </tr>
44
+ <% end %>
45
+ </tbody>
46
+ </table>
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
@@ -0,0 +1,5 @@
1
+ <h1>New feature</h1>
2
+
3
+ <%= render 'databaseformalizer/entities/form', :action=>"new", :entity_def=>"feature" %>
4
+
5
+ <%= link_to 'Back', features_path %>
@@ -0,0 +1,4 @@
1
+ <%= @feature.to_json%>
2
+
3
+ <%= link_to 'Edit', edit_databaseformalizer_entity_path(@feature) %> |
4
+ <%= link_to 'Back', elise_features_path %>
@@ -0,0 +1,147 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Elise</title>
7
+
8
+ <%= javascript_include_tag(
9
+ "/javascripts/jquery.js",
10
+ "/javascripts/databaseformalizer.js",
11
+ "/bootstrap/js/bootstrap-transition.js",
12
+ "/bootstrap/js/bootstrap-alert.js",
13
+ "/bootstrap/js/bootstrap-modal.js",
14
+ "/bootstrap/js/bootstrap-dropdown.js",
15
+ "/bootstrap/js/bootstrap-tab.js",
16
+ "/bootstrap/js/bootstrap-toggle.js",
17
+ "/bootstrap/js/bootstrap-fixed-header.js",
18
+ "/bootstrap/js/bootstrap-collapse.js",
19
+ "/bootstrap/js/bootstrap-tooltip.js",
20
+ "/bootstrap/js/bootstrap-popover.js",
21
+ "/tablesorter/jquery.tablesorter.min.js",
22
+ "/tablesorter/jquery.tablesorter.js",
23
+ "/tablesorter/jquery.ui.datepicker.js",
24
+ "/jquery-ui/js/jquery-ui-1.8.21.custom.min.js",
25
+ "/jquery-validation/jquery.validate.min.js"
26
+ ) %>
27
+ <%= csrf_meta_tag %>
28
+ <%= stylesheet_link_tag(
29
+ "/bootstrap/css/bootstrap.min.css",
30
+ "/stylesheets/FRM.css",
31
+ "/bootstrap/css/bootstrap-responsive.css",
32
+ "/tablesorter/style.css",
33
+ "/bootstrap/css/bootstrap-toggle.css",
34
+ "/bootstrap/css/bootstrap-fixed-header.css",
35
+ "/bootstrap/css/amadeus.css",
36
+ "/jquery-ui/css/ui-lightness/jquery-ui-1.8.21.custom.css") %>
37
+ </head>
38
+ <script language="javascript" type="text/javascript" >
39
+ $(document).ready(function(){
40
+ $('.table-fixed-header').fixedHeader();
41
+ });
42
+ </script>
43
+ <body>
44
+ <div class="navbar navbar-fixed-top">
45
+ <div class="navbar-inner">
46
+ <div class="container" style="width: auto;">
47
+ <ul class="nav">
48
+ <li class="dropdown">
49
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
50
+ <table>
51
+ <tr>
52
+ <td class="logo"></td>
53
+ <td>Elise
54
+ <br/>
55
+ <div class="subtitle">
56
+ <!-- subtitle Building requests for you -->
57
+ </div>
58
+ </td>
59
+ <td><b class="caret"></b></td>
60
+ </tr>
61
+ </table>
62
+ </a>
63
+ <ul class="dropdown-menu">
64
+ <% OTHER_APPLICATIONS_URL.sort.each do |website_name, website_url|%>
65
+ <li>
66
+ <%= link_to website_name, website_url , { :target => "_blank" } %>
67
+ </li>
68
+ <% end %>
69
+ </ul>
70
+ </li>
71
+ </ul>
72
+ <ul class="nav pull-right" style="margin-top: 0px">
73
+
74
+ <%= render :partial => "elise/account/header_menu" %>
75
+
76
+ <% if current_user.can_see("databaseformalizer")%>
77
+ <li class="dropdown">
78
+ <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
79
+ <i class="icon-wrench"></i>Administration<span class="caret"></span>
80
+ </a>
81
+
82
+ <ul class="dropdown-menu">
83
+ <li><%= link_to "Users", users_path %></li>
84
+ <li><%= link_to "Access rights", elise_features_path %></li>
85
+ <li><%= link_to "Roles", roles_path %></li>
86
+ <li class="divider"></li>
87
+ <p class="nav-header">Databaseformalizer</p>
88
+ <li><%= link_to "entity def", databaseformalizer_entity_defs_path %></li>
89
+ <li><%= link_to "attributs def", databaseformalizer_attr_defs_path %></li>
90
+ <li><%= link_to "entities", databaseformalizer_entities_path %></li>
91
+ </ul>
92
+ </li>
93
+ <%end%>
94
+ </ul>
95
+ </div>
96
+ <%= render :partial => "shared/navigation" %>
97
+ </div>
98
+ </div>
99
+
100
+ <div class="container-fluid">
101
+ <div class="row-fluid">
102
+ <div class="span2">
103
+ <div class="sidebar-nav-fixed">
104
+ <ul id="nav-list" class="nav nav-list">
105
+ <li><%= link_to "Access rights", elise_features_path %></li>
106
+ <li><%= link_to "Users", users_path %></li>
107
+ <li><%= link_to "Roles", roles_path %></li>
108
+ </ul>
109
+ </div>
110
+ </div>
111
+ <div class="span10">
112
+ <div class="container">
113
+ <div class="row">
114
+ <div class="span10">
115
+ <!-- Flash Display -->
116
+ <% if !flash[:error].nil? %>
117
+ <div class="alert alert-error">
118
+ <a class="close" data-dismiss="alert" href="#">×</a>
119
+ <b>Error:</b> <span id="flash_notice"><%= flash[:error] %></span>
120
+ </div>
121
+ <% end %>
122
+ <% if !flash[:notice].nil? %>
123
+ <div class="alert alert-success">
124
+ <a class="close" data-dismiss="alert" href="#">×</a>
125
+ <b>Information:</b> <span id="flash_notice"><%= flash[:notice] %></span>
126
+ </div>
127
+ <% end %>
128
+ <% if !flash[:warning].nil? %>
129
+ <div class="alert alert-info">
130
+ <a class="close" data-dismiss="alert" href="#">×</a>
131
+ <b>Warning:</b><span id="flash_notice"> <%= flash[:warning] %></span>
132
+ </div>
133
+ <% end %>
134
+ <div class="visual-border">
135
+ <%= content_for?(:content) ? yield(:content) : yield %>
136
+ </div>
137
+ </div>
138
+ <div class="span2">
139
+ <!-- Empty because we don't want the border in all the page -->
140
+ </div>
141
+ </div>
142
+ </div>
143
+ </div>
144
+ </div>
145
+ </div>
146
+ </body>
147
+ </html>
@@ -0,0 +1,33 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+ $LOAD_PATH << File.join(File.dirname(__FILE__), 'lib')
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{elise}
8
+ s.version = "0.5.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Christophe Desclaux"]
12
+ s.date = %q{2012-05-01}
13
+ s.email = %q{descl@zouig.org}
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.require_paths = ["lib"]
18
+
19
+ s.rubygems_version = %q{1.3.7}
20
+ s.summary = %q{Elise is a devise like gem witch manage users according to databaseFormalizer}
21
+
22
+ s.homepage = "https://github.com/descl/elise"
23
+
24
+ if s.respond_to? :specification_version then
25
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
26
+ s.specification_version = 3
27
+
28
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
29
+ else
30
+ end
31
+ else
32
+ end
33
+ end
@@ -0,0 +1,27 @@
1
+ module Elise
2
+ ## Define ControllerMethods
3
+ module Controller
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ helper_method :current_user
7
+ before_filter :set_special_layout_elise
8
+ end
9
+
10
+ def set_special_layout_elise
11
+ module_name = self.class.name.split("::").first
12
+ if module_name == 'Elise'
13
+ self.class.layout "elise/layouts/application"
14
+ end
15
+ end
16
+
17
+ module InstanceMethods
18
+ def current_user
19
+ return Account.current_user(session)
20
+ end
21
+ end
22
+ end
23
+
24
+ end
25
+ ::ActionController::Base.send :include, Elise::Controller
26
+
27
+
@@ -0,0 +1,3 @@
1
+ module ApplicationHelper
2
+
3
+ end
@@ -0,0 +1,26 @@
1
+ module Elise
2
+ require 'application_controller'
3
+ require File.expand_path('../engine', __FILE__)
4
+ require File.expand_path('../application_controller', __FILE__)
5
+
6
+ module Elise
7
+
8
+ end
9
+ def extraRoutes(map)
10
+
11
+ mount_at = '/elise'
12
+
13
+
14
+ map.with_options(:path_prefix => mount_at, :name_prefix => "elise_") do |t|
15
+ t.login "login", :controller => "elise/account", :action => "login"
16
+ t.logout "logout", :controller => "elise/account", :action => "logout"
17
+ t.role "role", :controller => "elise/account", :action => "role"
18
+ t.resources :features, :controller => "elise/features"
19
+
20
+ end
21
+ map.elise 'elise',
22
+ :action => 'index',
23
+ :controller => 'elise/account'
24
+ end
25
+ module_function :extraRoutes
26
+ end
@@ -0,0 +1,11 @@
1
+ #require 'elise'
2
+ #require 'rails'
3
+ #require 'action_controller'
4
+ require 'application_helper'
5
+
6
+ module Elise
7
+ class Engine < Rails::Engine
8
+
9
+
10
+ end
11
+ end
@@ -0,0 +1,52 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+
4
+ class EliseGenerator < Rails::Generators::Base
5
+ include Rails::Generators::Migration
6
+
7
+ def self.source_root
8
+ File.join(File.dirname(__FILE__), 'templates')
9
+ end
10
+
11
+ def self.next_migration_number(dirname) #:nodoc:
12
+ if ActiveRecord::Base.timestamped_migrations
13
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
14
+ else
15
+ "%.3d" % (current_migration_number(dirname) + 1)
16
+ end
17
+ end
18
+
19
+
20
+ # Every method that is declared below will be automatically executed when the generator is run
21
+
22
+ def create_migration_file
23
+ f = File.open File.join(File.dirname(__FILE__), 'templates', 'schema.rb')
24
+ schema = f.read; f.close
25
+
26
+ schema.gsub!(/ActiveRecord::Schema.*\n/, '')
27
+ schema.gsub!(/^end\n*$/, '')
28
+
29
+ f = File.open File.join(File.dirname(__FILE__), 'templates', 'migration.rb')
30
+ migration = f.read; f.close
31
+ migration.gsub!(/SCHEMA_AUTO_INSERTED_HERE/, schema)
32
+
33
+ tmp = File.open "tmp/~migration_ready.rb", "w"
34
+ tmp.write migration
35
+ tmp.close
36
+
37
+ migration_template '../../../tmp/~migration_ready.rb',
38
+ 'db/migrate/create_elise_tables.rb'
39
+ remove_file 'tmp/~migration_ready.rb'
40
+ end
41
+
42
+ def copy_initializer_file
43
+ copy_file 'initializer.rb', 'config/initializers/elise.rb'
44
+ end
45
+
46
+ def update_application_template
47
+ f = File.open "app/views/layouts/application.html.erb"
48
+ layout = f.read; f.close
49
+
50
+ end
51
+
52
+ end
@@ -0,0 +1,8 @@
1
+ module Elise
2
+ class Engine < Rails::Engine
3
+
4
+ config.mount_at = '/elise'
5
+ config.widget_factory_name = 'Factory Name'
6
+
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Elise
2
+ class Engine < Rails::Engine
3
+
4
+ config.mount_at = '/databaseformalizer'
5
+ config.widget_factory_name = 'Factory Name'
6
+
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ class CreateEliseTables < ActiveRecord::Migration
2
+ def self.up
3
+ SCHEMA_AUTO_INSERTED_HERE
4
+ end
5
+
6
+ def self.down
7
+
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ ActiveRecord::Schema.define(:version => 0) do
2
+
3
+ # create_table :databaseformalizer_widgets, :force => true do |t|
4
+ # t.string :title
5
+ # t.datetime :created_at
6
+ # t.datetime :updated_at
7
+ # end
8
+ #
9
+ # add_index :databaseformalizer_widgets, [:title]
10
+
11
+
12
+
13
+ end
@@ -0,0 +1,8 @@
1
+ namespace :elise do
2
+
3
+ desc "example gem rake task"
4
+ task :report => :environment do
5
+ puts "you just ran the example gem rake task"
6
+ end
7
+
8
+ end
Binary file
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+ require 'rails/performance_test_help'
3
+
4
+ # Profiling results for each test method are written to tmp/performance.
5
+ class BrowsingTest < ActionDispatch::PerformanceTest
6
+ def test_homepage
7
+ get '/'
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path('../../config/environment', __FILE__)
3
+ require 'rails/test_help'
4
+
5
+ class ActiveSupport::TestCase
6
+ # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
7
+ #
8
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
9
+ # -- they do not yet inherit this setting
10
+ fixtures :all
11
+
12
+ # Add more helper methods to be used by all tests here...
13
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: elise
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Christophe Desclaux
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-01 00:00:00.000000000Z
13
+ dependencies: []
14
+ description:
15
+ email: descl@zouig.org
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - .project
21
+ - README.md
22
+ - Rakefile
23
+ - app/controllers/elise/account_controller.rb
24
+ - app/controllers/elise/features_controller.rb
25
+ - app/helpers/elise/account_helper.rb
26
+ - app/helpers/elise/features_helper.rb
27
+ - app/models/elise/account.rb
28
+ - app/models/elise/feature.rb
29
+ - app/views/elise/account/_header_menu.html.erb
30
+ - app/views/elise/account/_login_form.html.erb
31
+ - app/views/elise/account/index.html.erb
32
+ - app/views/elise/features/index.html.erb
33
+ - app/views/elise/features/new.html.erb
34
+ - app/views/elise/features/show.html.erb
35
+ - app/views/elise/layouts/application.html.erb
36
+ - elise.gemspec
37
+ - lib/application_controller.rb
38
+ - lib/application_helper.rb
39
+ - lib/elise.rb
40
+ - lib/engine.rb
41
+ - lib/rails/generators/elise/elise_generator.rb
42
+ - lib/rails/generators/elise/templates/initializer.rb
43
+ - lib/rails/generators/elise/templates/initializer.rb.bak
44
+ - lib/rails/generators/elise/templates/migration.rb
45
+ - lib/rails/generators/elise/templates/schema.rb
46
+ - lib/rails/railties/tasks.rake
47
+ - public/images/rails.png
48
+ - test/performance/browsing_test.rb
49
+ - test/test_helper.rb
50
+ homepage: https://github.com/descl/elise
51
+ licenses: []
52
+ post_install_message:
53
+ rdoc_options: []
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ requirements: []
69
+ rubyforge_project:
70
+ rubygems_version: 1.7.2
71
+ signing_key:
72
+ specification_version: 3
73
+ summary: Elise is a devise like gem witch manage users according to databaseFormalizer
74
+ test_files: []