rails-maker 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +21 -0
- data/README.md +87 -0
- data/bin/rails-maker +16 -0
- data/lib/rails-maker.rb +8 -0
- data/lib/rails-maker/cli.rb +44 -0
- data/lib/rails-maker/errors.rb +11 -0
- data/lib/rails-maker/template_runner.rb +30 -0
- data/lib/rails-maker/version.rb +3 -0
- data/spec/railsmaker_cli_spec.rb +13 -0
- data/spec/railsmaker_template_runner_spec.rb +27 -0
- data/spec/spec_helper.rb +3 -0
- data/templates/default/bootstrap.rb +76 -0
- data/templates/default/default.rb +57 -0
- data/templates/default/lib/admin.rb +29 -0
- data/templates/default/lib/admin/dashboard_spec.rb +24 -0
- data/templates/default/lib/admin/layout.rb +79 -0
- data/templates/default/lib/admin/sass.rb +43 -0
- data/templates/default/lib/admin/users.rb +134 -0
- data/templates/default/lib/admin/users_spec.rb +31 -0
- data/templates/default/lib/application_layout.rb +118 -0
- data/templates/default/lib/authentication.rb +165 -0
- data/templates/default/lib/authorization.rb +112 -0
- data/templates/default/lib/css.rb +53 -0
- data/templates/default/lib/db.rb +2 -0
- data/templates/default/lib/db_seed.rb +1 -0
- data/templates/default/lib/gemfile.rb +73 -0
- data/templates/default/lib/haml_generator.rb +13 -0
- data/templates/default/lib/home_controller.rb +10 -0
- data/templates/default/lib/initializers.rb +0 -0
- data/templates/default/lib/rails_clean.rb +12 -0
- data/templates/default/lib/test_suite.rb +11 -0
- metadata +205 -0
@@ -0,0 +1,112 @@
|
|
1
|
+
say "Building roles"
|
2
|
+
generate(:model, "role name:string")
|
3
|
+
generate(:migration, "UsersHaveAndBelongToManyRoles")
|
4
|
+
habtm_roles = Dir['db/migrate/*_users_have_and_belong_to_many_roles.rb'].first
|
5
|
+
inject_into_file habtm_roles, :after => "def self.up\n" do
|
6
|
+
<<-RUBY
|
7
|
+
create_table :roles_users, :id => false do |t|
|
8
|
+
t.references :role, :user
|
9
|
+
end
|
10
|
+
RUBY
|
11
|
+
end
|
12
|
+
|
13
|
+
inject_into_file habtm_roles, :after => "def self.down\n" do
|
14
|
+
<<-RUBY
|
15
|
+
drop_table :roles_users
|
16
|
+
RUBY
|
17
|
+
end
|
18
|
+
|
19
|
+
inject_into_file 'app/models/user.rb', :after => "class User < ActiveRecord::Base\n" do
|
20
|
+
<<-RUBY
|
21
|
+
has_and_belongs_to_many :roles
|
22
|
+
RUBY
|
23
|
+
end
|
24
|
+
|
25
|
+
inject_into_file 'app/models/role.rb', :after => "class Role < ActiveRecord::Base\n" do
|
26
|
+
<<-RUBY
|
27
|
+
has_and_belongs_to_many :users
|
28
|
+
|
29
|
+
def self.sanitize role
|
30
|
+
role.to_s.humanize.split(' ').each{ |word| word.capitalize! }.join(' ')
|
31
|
+
end
|
32
|
+
RUBY
|
33
|
+
end
|
34
|
+
|
35
|
+
create_file 'app/models/ability.rb' do
|
36
|
+
<<-RUBY
|
37
|
+
class Ability
|
38
|
+
include CanCan::Ability
|
39
|
+
|
40
|
+
def initialize(user)
|
41
|
+
user ||= User.new # guest user
|
42
|
+
|
43
|
+
if user.role? :admin
|
44
|
+
can :manage, :all
|
45
|
+
# elsif user.role? :writter
|
46
|
+
# can :manage, [Post, Asset]
|
47
|
+
# elsif user.role? :memeber
|
48
|
+
# can :read, [MemberPost, Asset]
|
49
|
+
# # manage posts, assets user owns
|
50
|
+
# can :manage, Post do |p|
|
51
|
+
# p.try(:owner) == user
|
52
|
+
# end
|
53
|
+
# can :manage, Asset do |a|
|
54
|
+
# a.try(:owner) == user
|
55
|
+
# end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
RUBY
|
60
|
+
end
|
61
|
+
|
62
|
+
inject_into_file 'app/models/user.rb', :before => "def destroy\n" do
|
63
|
+
<<-RUBY
|
64
|
+
|
65
|
+
def role?(role)
|
66
|
+
return !!self.roles.find_by_name( Role.sanitize role )
|
67
|
+
end
|
68
|
+
|
69
|
+
RUBY
|
70
|
+
end
|
71
|
+
|
72
|
+
inject_into_file 'app/controllers/application_controller.rb', :before => "end\n" do
|
73
|
+
<<-RUBY
|
74
|
+
|
75
|
+
rescue_from CanCan::AccessDenied do |exception|
|
76
|
+
flash[:error] = "Access Denied"
|
77
|
+
redirect_to root_url
|
78
|
+
end
|
79
|
+
RUBY
|
80
|
+
end
|
81
|
+
|
82
|
+
if ENV['RAILSMAKER_ADMIN']
|
83
|
+
inject_into_file 'app/views/admin/users/_form.html.haml', :after => "= f.password_field :password_confirmation\n" do
|
84
|
+
<<-'RUBY'
|
85
|
+
.form_row
|
86
|
+
- Role.find(:all, :order => "name").each do |role|
|
87
|
+
.check_box_item
|
88
|
+
= check_box_tag "user[role_ids][]", role.id, @user.roles.include?(role), :id => "user_role_#{role.id}"
|
89
|
+
%label{:for => "user_role_#{role.id}"}= role.name.humanize
|
90
|
+
= hidden_field_tag "user[role_ids][]", ""
|
91
|
+
RUBY
|
92
|
+
end
|
93
|
+
|
94
|
+
gsub_file 'app/controllers/admin/users_controller.rb', /# attr_accessor logic here/, '@user.accessible = [:role_ids] if current_user.role? :admin'
|
95
|
+
end
|
96
|
+
|
97
|
+
append_file 'db/seeds.rb' do
|
98
|
+
<<-FILE
|
99
|
+
Role.create! :name => 'Admin'
|
100
|
+
Role.create! :name => 'Member'
|
101
|
+
|
102
|
+
user1 = User.find_by_email('#{ENV['RAILSMAKER_USER_EMAIL']}')
|
103
|
+
user1.role_ids = [1,2]
|
104
|
+
user1.save
|
105
|
+
FILE
|
106
|
+
end
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
create_file 'app/assets/stylesheets/reset.css' do
|
2
|
+
<<-FILE
|
3
|
+
html, body, div, span, object, iframe,
|
4
|
+
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
5
|
+
abbr, address, cite, code,
|
6
|
+
del, dfn, em, img, ins, kbd, q, samp,
|
7
|
+
small, strong, sub, sup, var,
|
8
|
+
b, i,
|
9
|
+
dl, dt, dd, ol, ul, li,
|
10
|
+
fieldset, form, label, legend,
|
11
|
+
table, caption, tbody, tfoot, thead, tr, th, td,
|
12
|
+
article, aside, canvas, details, figcaption, figure,
|
13
|
+
footer, header, hgroup, menu, nav, section, summary,
|
14
|
+
time, mark, audio, video {
|
15
|
+
margin:0;
|
16
|
+
padding:0;
|
17
|
+
border:0;
|
18
|
+
outline:0;
|
19
|
+
font-size:100%;
|
20
|
+
vertical-align:baseline;
|
21
|
+
background:transparent;
|
22
|
+
}
|
23
|
+
|
24
|
+
article, aside, details, figcaption, figure,
|
25
|
+
footer, header, hgroup, menu, nav, section {
|
26
|
+
display:block;
|
27
|
+
}
|
28
|
+
|
29
|
+
nav ul { list-style:none; }
|
30
|
+
|
31
|
+
blockquote, q { quotes:none; }
|
32
|
+
|
33
|
+
blockquote:before, blockquote:after,
|
34
|
+
q:before, q:after { content:''; content:none; }
|
35
|
+
|
36
|
+
a { margin:0; padding:0; font-size:100%; vertical-align:baseline; background:transparent; }
|
37
|
+
|
38
|
+
ins { background-color:#ff9; color:#000; text-decoration:none; }
|
39
|
+
|
40
|
+
mark { background-color:#ff9; color:#000; font-style:italic; font-weight:bold; }
|
41
|
+
|
42
|
+
del { text-decoration: line-through; }
|
43
|
+
|
44
|
+
abbr[title], dfn[title] { border-bottom:1px dotted; cursor:help; }
|
45
|
+
|
46
|
+
/* tables still need cellspacing="0" in the markup */
|
47
|
+
table { border-collapse:collapse; border-spacing:0; }
|
48
|
+
|
49
|
+
hr { display:block; height:1px; border:0; border-top:1px solid #ccc; margin:1em 0; padding:0; }
|
50
|
+
|
51
|
+
input, select { vertical-align:middle; }
|
52
|
+
FILE
|
53
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
run 'rake db:seed'
|
@@ -0,0 +1,73 @@
|
|
1
|
+
run 'rm Gemfile'
|
2
|
+
create_file 'Gemfile' do
|
3
|
+
<<-RUBY
|
4
|
+
source 'http://rubygems.org'
|
5
|
+
|
6
|
+
gem "rails", "3.2.11"
|
7
|
+
gem "pg"
|
8
|
+
|
9
|
+
# for sphinx search we also need mysql2
|
10
|
+
gem "thinking-sphinx"
|
11
|
+
gem "mysql2"
|
12
|
+
|
13
|
+
gem "jquery-rails"
|
14
|
+
gem "unicorn"
|
15
|
+
gem "thor"
|
16
|
+
gem "settingslogic"
|
17
|
+
gem "coffee-script"
|
18
|
+
gem "haml-rails"
|
19
|
+
gem "state_machine"
|
20
|
+
gem "yajl-ruby"
|
21
|
+
# gem "newrelic_rpm"
|
22
|
+
gem "awesome_print"
|
23
|
+
gem "uglifier"
|
24
|
+
gem "execjs"
|
25
|
+
gem "therubyracer"
|
26
|
+
gem "devise"
|
27
|
+
gem "omniauth-facebook", "1.4.0"
|
28
|
+
gem "omniauth-vkontakte"
|
29
|
+
gem "omniauth-odnoklassniki"
|
30
|
+
gem "kaminari"
|
31
|
+
gem "carrierwave"
|
32
|
+
gem "rmagick"
|
33
|
+
gem "sanitize"
|
34
|
+
gem "progressbar"
|
35
|
+
gem "faraday"
|
36
|
+
gem "faraday_middleware"
|
37
|
+
gem "patron"
|
38
|
+
gem "certified"
|
39
|
+
gem "unicode"
|
40
|
+
gem "rolify"
|
41
|
+
gem "psych"
|
42
|
+
gem "sentry-raven", :git => "https://github.com/getsentry/raven-ruby.git"
|
43
|
+
gem "simple_form"
|
44
|
+
|
45
|
+
group :assets do
|
46
|
+
gem "sass-rails"
|
47
|
+
gem "compass-rails"
|
48
|
+
gem "turbo-sprockets-rails3", "~> 0.3.6"
|
49
|
+
gem "bootstrap-sass", "~> 2.2.1.1"
|
50
|
+
end
|
51
|
+
|
52
|
+
group :development do
|
53
|
+
gem "thin"
|
54
|
+
gem "mongrel", "1.2.0.pre2"
|
55
|
+
gem "mina"
|
56
|
+
gem "capistrano"
|
57
|
+
gem "capistrano-ext"
|
58
|
+
gem "capistrano_colors"
|
59
|
+
gem "rvm-capistrano"
|
60
|
+
gem "letter_opener"
|
61
|
+
gem "annotate"
|
62
|
+
gem "faker"
|
63
|
+
end
|
64
|
+
|
65
|
+
group :test, :development do
|
66
|
+
gem "rspec-rails"
|
67
|
+
gem "factory_girl_rails"
|
68
|
+
end
|
69
|
+
|
70
|
+
RUBY
|
71
|
+
end
|
72
|
+
|
73
|
+
run 'bundle install'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
inject_into_file 'config/application.rb', :after => "# Configure the default encoding used in templates for Ruby 1.9.\n" do
|
2
|
+
<<-RUBY
|
3
|
+
config.generators do |g|
|
4
|
+
g.template_engine :haml
|
5
|
+
end
|
6
|
+
RUBY
|
7
|
+
end
|
8
|
+
|
9
|
+
initializer('haml.rb') do
|
10
|
+
<<-'FILE'
|
11
|
+
Haml::Template.options[:format] = :html5
|
12
|
+
FILE
|
13
|
+
end
|
File without changes
|
@@ -0,0 +1,12 @@
|
|
1
|
+
run 'rm public/index.html'
|
2
|
+
run 'rm public/images/rails.png'
|
3
|
+
run 'rm README'
|
4
|
+
run 'rm README.rdoc'
|
5
|
+
run 'rm public/favicon.ico'
|
6
|
+
#get "http://www.ikitlab.com/favicon.ico", "public/favicon.ico"
|
7
|
+
create_file 'README.md' do
|
8
|
+
<<-FILE
|
9
|
+
#{app_name.humanize}
|
10
|
+
===========
|
11
|
+
FILE
|
12
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
run 'rails generate rspec:install'
|
2
|
+
|
3
|
+
inject_into_file 'config/application.rb', :after => "# Configure the default encoding used in templates for Ruby 1.9.\n" do
|
4
|
+
<<-RUBY
|
5
|
+
config.generators do |g|
|
6
|
+
g.test_framework :rspec
|
7
|
+
end
|
8
|
+
RUBY
|
9
|
+
end
|
10
|
+
|
11
|
+
run 'mkdir spec/factories'
|
metadata
ADDED
@@ -0,0 +1,205 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rails-maker
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Konstantin Kalbazov
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-02-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: thor
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rails
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: hpricot
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: ruby_parser
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: bundler
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rspec
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: thor
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
description: Generate a Rails app with application templates
|
143
|
+
email: kalbazov@gmail.com
|
144
|
+
executables:
|
145
|
+
- rails-maker
|
146
|
+
extensions: []
|
147
|
+
extra_rdoc_files: []
|
148
|
+
files:
|
149
|
+
- LICENSE
|
150
|
+
- README.md
|
151
|
+
- bin/rails-maker
|
152
|
+
- lib/rails-maker.rb
|
153
|
+
- lib/rails-maker/cli.rb
|
154
|
+
- lib/rails-maker/errors.rb
|
155
|
+
- lib/rails-maker/template_runner.rb
|
156
|
+
- lib/rails-maker/version.rb
|
157
|
+
- spec/railsmaker_cli_spec.rb
|
158
|
+
- spec/railsmaker_template_runner_spec.rb
|
159
|
+
- spec/spec_helper.rb
|
160
|
+
- templates/default/bootstrap.rb
|
161
|
+
- templates/default/default.rb
|
162
|
+
- templates/default/lib/admin.rb
|
163
|
+
- templates/default/lib/admin/dashboard_spec.rb
|
164
|
+
- templates/default/lib/admin/layout.rb
|
165
|
+
- templates/default/lib/admin/sass.rb
|
166
|
+
- templates/default/lib/admin/users.rb
|
167
|
+
- templates/default/lib/admin/users_spec.rb
|
168
|
+
- templates/default/lib/application_layout.rb
|
169
|
+
- templates/default/lib/authentication.rb
|
170
|
+
- templates/default/lib/authorization.rb
|
171
|
+
- templates/default/lib/css.rb
|
172
|
+
- templates/default/lib/db.rb
|
173
|
+
- templates/default/lib/db_seed.rb
|
174
|
+
- templates/default/lib/gemfile.rb
|
175
|
+
- templates/default/lib/haml_generator.rb
|
176
|
+
- templates/default/lib/home_controller.rb
|
177
|
+
- templates/default/lib/initializers.rb
|
178
|
+
- templates/default/lib/rails_clean.rb
|
179
|
+
- templates/default/lib/test_suite.rb
|
180
|
+
homepage: http://github.com/koteus/rails-maker
|
181
|
+
licenses:
|
182
|
+
- MIT
|
183
|
+
post_install_message:
|
184
|
+
rdoc_options: []
|
185
|
+
require_paths:
|
186
|
+
- lib
|
187
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
188
|
+
none: false
|
189
|
+
requirements:
|
190
|
+
- - ! '>='
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: '0'
|
193
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
|
+
none: false
|
195
|
+
requirements:
|
196
|
+
- - ! '>='
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
199
|
+
requirements: []
|
200
|
+
rubyforge_project:
|
201
|
+
rubygems_version: 1.8.25
|
202
|
+
signing_key:
|
203
|
+
specification_version: 3
|
204
|
+
summary: rails-maker-0.1.1
|
205
|
+
test_files: []
|