fetty-generators 1.7.1 → 2.0.0
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/Gemfile +2 -0
- data/README.rdoc +42 -36
- data/Rakefile +1 -3
- data/lib/generators/fetty.rb +160 -10
- data/lib/generators/fetty/authentication/USAGE +4 -0
- data/lib/generators/fetty/authentication/authentication_generator.rb +171 -0
- data/lib/generators/fetty/authentication/templates/controllers/reset_passwords_controller.rb +45 -0
- data/lib/generators/fetty/authentication/templates/controllers/sessions_controller.rb +30 -0
- data/lib/generators/fetty/authentication/templates/controllers/users_controller.rb +78 -0
- data/lib/generators/fetty/authentication/templates/helpers/reset_passwords_helper.rb +2 -0
- data/lib/generators/fetty/authentication/templates/helpers/sessions_helper.rb +2 -0
- data/lib/generators/fetty/authentication/templates/helpers/users_helper.rb +2 -0
- data/lib/generators/fetty/authentication/templates/lib/sessions_authentication.rb +53 -0
- data/lib/generators/fetty/authentication/templates/lib/users_authentication.rb +110 -0
- data/lib/generators/fetty/authentication/templates/mailers/setup_mail.rb +11 -0
- data/lib/generators/fetty/authentication/templates/mailers/user_mailer.rb +14 -0
- data/lib/generators/fetty/authentication/templates/models/active_record/create_users.rb +17 -0
- data/lib/generators/fetty/authentication/templates/models/active_record/user.rb +15 -0
- data/lib/generators/fetty/authentication/templates/models/mongoid/user.rb +23 -0
- data/lib/generators/fetty/authentication/templates/spec/controllers/reset_passwords_controller_spec.rb +93 -0
- data/lib/generators/fetty/authentication/templates/spec/controllers/sessions_controller_spec.rb +61 -0
- data/lib/generators/fetty/authentication/templates/spec/controllers/users_controller_spec.rb +158 -0
- data/lib/generators/fetty/authentication/templates/spec/models/user_spec.rb +108 -0
- data/lib/generators/fetty/authentication/templates/spec/routing/reset_passwords_routing_spec.rb +21 -0
- data/lib/generators/fetty/authentication/templates/spec/routing/sessions_routing_spec.rb +17 -0
- data/lib/generators/fetty/authentication/templates/spec/routing/users_routing_spec.rb +37 -0
- data/lib/generators/fetty/authentication/templates/spec/support/user_factories.rb +6 -0
- data/lib/generators/fetty/authentication/templates/views/layouts/application.html.erb +33 -0
- data/lib/generators/fetty/authentication/templates/views/reset_passwords/edit.html.erb +19 -0
- data/lib/generators/fetty/authentication/templates/views/reset_passwords/new.html.erb +14 -0
- data/lib/generators/fetty/authentication/templates/views/sessions/new.html.erb +22 -0
- data/lib/generators/fetty/authentication/templates/views/user_mailer/user_activation.text.erb +4 -0
- data/lib/generators/fetty/authentication/templates/views/user_mailer/user_forgot_password.text.erb +7 -0
- data/lib/generators/fetty/authentication/templates/views/users/_table.html.erb +23 -0
- data/lib/generators/fetty/authentication/templates/views/users/edit.html.erb +21 -0
- data/lib/generators/fetty/authentication/templates/views/users/index.html.erb +7 -0
- data/lib/generators/fetty/authentication/templates/views/users/index.js.erb +1 -0
- data/lib/generators/fetty/authentication/templates/views/users/new.html.erb +23 -0
- data/lib/generators/fetty/authentication/templates/views/users/show.html.erb +19 -0
- data/lib/generators/fetty/messages/USAGE +4 -0
- data/lib/generators/fetty/messages/messages_generator.rb +136 -0
- data/lib/generators/fetty/messages/templates/assets/javascripts/jquery.tokeninput.js +718 -0
- data/lib/generators/fetty/messages/templates/assets/javascripts/messages.js +19 -0
- data/lib/generators/fetty/messages/templates/assets/stylesheets/messages.css +87 -0
- data/lib/generators/fetty/messages/templates/assets/stylesheets/token-input-facebook.css +122 -0
- data/lib/generators/fetty/messages/templates/controllers/messages_controller.rb +109 -0
- data/lib/generators/fetty/messages/templates/helpers/messages_helper.rb +2 -0
- data/lib/generators/fetty/messages/templates/lib/users_messages.rb +67 -0
- data/lib/generators/fetty/messages/templates/models/active_record/create_messages.rb +24 -0
- data/lib/generators/fetty/messages/templates/models/active_record/message.rb +67 -0
- data/lib/generators/fetty/messages/templates/models/mongoid/message.rb +81 -0
- data/lib/generators/fetty/messages/templates/spec/controllers/messages_controller_spec.rb +78 -0
- data/lib/generators/fetty/messages/templates/spec/models/message_spec.rb +53 -0
- data/lib/generators/fetty/messages/templates/spec/routing/messages_routing_spec.rb +61 -0
- data/lib/generators/fetty/messages/templates/spec/support/message_factories.rb +8 -0
- data/lib/generators/fetty/messages/templates/views/_head.html.erb +20 -0
- data/lib/generators/fetty/messages/templates/views/_messages.html.erb +56 -0
- data/lib/generators/fetty/messages/templates/views/_tabs_panel.html.erb +11 -0
- data/lib/generators/fetty/messages/templates/views/index.html.erb +10 -0
- data/lib/generators/fetty/messages/templates/views/index.js.erb +1 -0
- data/lib/generators/fetty/messages/templates/views/new.html.erb +26 -0
- data/lib/generators/fetty/messages/templates/views/show.html.erb +35 -0
- data/lib/generators/fetty/scaffold/USAGE +2 -52
- data/lib/generators/fetty/scaffold/scaffold_generator.rb +96 -329
- data/lib/generators/fetty/scaffold/templates/controllers/active_record/controller.rb +60 -0
- data/lib/generators/fetty/scaffold/templates/controllers/mongoid/controller.rb +60 -0
- data/lib/generators/fetty/scaffold/templates/helpers/helper.rb +2 -0
- data/lib/generators/fetty/scaffold/templates/models/active_record/migration.rb +16 -0
- data/lib/generators/fetty/scaffold/templates/models/active_record/model.rb +10 -0
- data/lib/generators/fetty/scaffold/templates/models/mongoid/model.rb +16 -0
- data/lib/generators/fetty/scaffold/templates/test/rspec/controller.rb +98 -0
- data/lib/generators/fetty/scaffold/templates/test/rspec/factories.rb +26 -0
- data/lib/generators/fetty/scaffold/templates/test/rspec/helper.rb +15 -0
- data/lib/generators/fetty/scaffold/templates/test/rspec/model.rb +9 -0
- data/lib/generators/fetty/scaffold/templates/test/rspec/request.rb +11 -0
- data/lib/generators/fetty/scaffold/templates/test/rspec/routing.rb +41 -0
- data/lib/generators/fetty/scaffold/templates/test/test_unit/controller.rb +62 -0
- data/lib/generators/fetty/scaffold/templates/{fixtures.yml → test/test_unit/fixtures.yml} +2 -0
- data/lib/generators/fetty/scaffold/templates/test/test_unit/helper.rb +4 -0
- data/lib/generators/fetty/scaffold/templates/test/test_unit/model.rb +7 -0
- data/lib/generators/fetty/scaffold/templates/views/_form.html.erb +20 -0
- data/lib/generators/fetty/scaffold/templates/views/_table.html.erb +48 -0
- data/lib/generators/fetty/scaffold/templates/views/edit.html.erb +13 -0
- data/lib/generators/fetty/scaffold/templates/views/index.html.erb +15 -0
- data/lib/generators/fetty/scaffold/templates/views/{erb/index.js.erb → index.js.erb} +0 -0
- data/lib/generators/fetty/scaffold/templates/views/new.html.erb +9 -0
- data/lib/generators/fetty/scaffold/templates/views/show.html.erb +28 -0
- data/lib/generators/fetty/setup/USAGE +3 -20
- data/lib/generators/fetty/setup/setup_generator.rb +122 -61
- data/lib/generators/fetty/setup/templates/ability.rb +0 -0
- data/lib/generators/fetty/setup/templates/ckeditor.rb +54 -0
- data/lib/generators/fetty/setup/templates/ckeditor.tar.gz +0 -0
- data/lib/generators/fetty/setup/templates/escape_utils.rb +7 -0
- data/lib/generators/fetty/setup/templates/file_uploader.rb +15 -0
- data/lib/generators/fetty/setup/templates/image_uploader.rb +48 -0
- data/lib/generators/fetty/setup/templates/spec_helper.rb +44 -0
- data/lib/generators/fetty/views/USAGE +5 -0
- data/lib/generators/fetty/{layout/templates/stylesheet.css → views/templates/application.css} +184 -166
- data/lib/generators/fetty/views/templates/application.html.erb +23 -0
- data/lib/generators/fetty/{layout → views}/templates/application.js +0 -0
- data/lib/generators/fetty/views/templates/application_helper.rb +10 -0
- data/lib/generators/fetty/views/templates/down_arrow.gif +0 -0
- data/lib/generators/fetty/{layout → views}/templates/error_messages_helper.rb +0 -0
- data/lib/generators/fetty/{layout → views}/templates/layout_helper.rb +0 -0
- data/lib/generators/fetty/views/templates/up_arrow.gif +0 -0
- data/lib/generators/fetty/views/views_generator.rb +51 -0
- data/lib/generators/scaffold.rb +204 -0
- metadata +126 -111
- data/LICENSE +0 -20
- data/lib/generators/fetty/layout/USAGE +0 -26
- data/lib/generators/fetty/layout/layout_generator.rb +0 -44
- data/lib/generators/fetty/layout/templates/layout.html.erb +0 -32
- data/lib/generators/fetty/layout/templates/layout.html.haml +0 -34
- data/lib/generators/fetty/layout/templates/no-devise-links-layout.html.erb +0 -23
- data/lib/generators/fetty/layout/templates/no-devise-links-layout.html.haml +0 -23
- data/lib/generators/fetty/layout/templates/stylesheet.sass +0 -163
- data/lib/generators/fetty/scaffold/templates/actions/create.rb +0 -8
- data/lib/generators/fetty/scaffold/templates/actions/destroy.rb +0 -5
- data/lib/generators/fetty/scaffold/templates/actions/edit.rb +0 -3
- data/lib/generators/fetty/scaffold/templates/actions/index.rb +0 -10
- data/lib/generators/fetty/scaffold/templates/actions/new.rb +0 -3
- data/lib/generators/fetty/scaffold/templates/actions/show.rb +0 -3
- data/lib/generators/fetty/scaffold/templates/actions/update.rb +0 -8
- data/lib/generators/fetty/scaffold/templates/controller.rb +0 -7
- data/lib/generators/fetty/scaffold/templates/helper.rb +0 -2
- data/lib/generators/fetty/scaffold/templates/migration.rb +0 -16
- data/lib/generators/fetty/scaffold/templates/model.rb +0 -7
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/create.rb +0 -11
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/destroy.rb +0 -6
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/edit.rb +0 -4
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/index.rb +0 -4
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/new.rb +0 -4
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/show.rb +0 -4
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/update.rb +0 -11
- data/lib/generators/fetty/scaffold/templates/tests/rspec/controller.rb +0 -8
- data/lib/generators/fetty/scaffold/templates/tests/rspec/model.rb +0 -7
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/create.rb +0 -13
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/destroy.rb +0 -8
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/edit.rb +0 -6
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/index.rb +0 -6
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/new.rb +0 -6
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/show.rb +0 -6
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/update.rb +0 -13
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/controller.rb +0 -5
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/model.rb +0 -7
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/create.rb +0 -11
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/destroy.rb +0 -6
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/edit.rb +0 -4
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/index.rb +0 -4
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/new.rb +0 -4
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/show.rb +0 -4
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/update.rb +0 -11
- data/lib/generators/fetty/scaffold/templates/tests/testunit/controller.rb +0 -5
- data/lib/generators/fetty/scaffold/templates/tests/testunit/model.rb +0 -7
- data/lib/generators/fetty/scaffold/templates/views/erb/_form.html.erb +0 -22
- data/lib/generators/fetty/scaffold/templates/views/erb/_table.html.erb +0 -50
- data/lib/generators/fetty/scaffold/templates/views/erb/edit.html.erb +0 -12
- data/lib/generators/fetty/scaffold/templates/views/erb/index.html.erb +0 -13
- data/lib/generators/fetty/scaffold/templates/views/erb/new.html.erb +0 -9
- data/lib/generators/fetty/scaffold/templates/views/erb/show.html.erb +0 -26
- data/lib/generators/fetty/scaffold/templates/views/haml/_form.html.haml +0 -8
- data/lib/generators/fetty/scaffold/templates/views/haml/_table.html.haml +0 -33
- data/lib/generators/fetty/scaffold/templates/views/haml/edit.html.haml +0 -14
- data/lib/generators/fetty/scaffold/templates/views/haml/index.html.haml +0 -12
- data/lib/generators/fetty/scaffold/templates/views/haml/index.js.haml +0 -1
- data/lib/generators/fetty/scaffold/templates/views/haml/new.html.haml +0 -8
- data/lib/generators/fetty/scaffold/templates/views/haml/show.html.haml +0 -23
data/Gemfile
CHANGED
data/README.rdoc
CHANGED
|
@@ -1,69 +1,75 @@
|
|
|
1
1
|
= Fetty Generators
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Gem dependencies :
|
|
4
|
+
- CanCan
|
|
5
|
+
- simple_form
|
|
6
|
+
- ckeditor 3.5.4
|
|
7
|
+
- kaminari
|
|
8
|
+
- carrierwave
|
|
9
|
+
- etc. (it will automatically setup the gems)
|
|
7
10
|
|
|
8
|
-
|
|
9
|
-
- using simple_form as a default generated form.
|
|
10
|
-
- add some extra AJAX features to search and sorting using meta_search, and pagination in your index page.
|
|
11
|
-
- using Devise(josevalim) for authentication and CanCan(ryanb) for authorizations [optional].
|
|
12
|
-
- giving the default checking abilities like ( can? :read ) in your views for authorizations.
|
|
13
|
-
- closable flash message.
|
|
14
|
-
- alow you pass custom field:type such as paperclip / tinymce in scaffolding.
|
|
15
|
-
|
|
16
|
-
it also provides for ERB and HAML template. Ups sorry this generators only works for Rails 3
|
|
11
|
+
This generators only works with Rails 3
|
|
17
12
|
|
|
18
13
|
== Setup
|
|
19
14
|
|
|
20
15
|
=== Rails 3
|
|
21
16
|
|
|
22
|
-
|
|
17
|
+
Add the gem into your Gemfile.
|
|
23
18
|
|
|
24
|
-
gem
|
|
19
|
+
gem 'fetty-generators', :group => :development
|
|
25
20
|
|
|
26
|
-
|
|
21
|
+
run the setup first!
|
|
27
22
|
|
|
28
|
-
|
|
23
|
+
rails g fetty:setup
|
|
29
24
|
|
|
30
|
-
|
|
25
|
+
or if you like to using with MongoDB, this generator will works with mongoid
|
|
31
26
|
|
|
32
|
-
rails
|
|
27
|
+
rails g fetty:setup --mongoid
|
|
33
28
|
|
|
34
|
-
Then
|
|
29
|
+
Then generate the layout
|
|
35
30
|
|
|
36
|
-
rails
|
|
31
|
+
rails g fetty:views layout
|
|
37
32
|
|
|
38
|
-
And then you just simply type the command
|
|
33
|
+
And then you just simply type the command `fetty:scaffold` for scaffolding
|
|
39
34
|
|
|
40
|
-
rails g fetty:scaffold
|
|
35
|
+
rails g fetty:scaffold post title:string content:text published:boolean
|
|
41
36
|
|
|
42
|
-
|
|
37
|
+
Don't forget to run `rake db:migrate` if you are using ActiveRecord
|
|
43
38
|
|
|
44
39
|
== Additional field type
|
|
45
40
|
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
This version using carrierwave for handling an attachment and ckeditor for WYSIWYG editor,
|
|
42
|
+
by passing 'image', 'file' and 'editor' as an argument when generate a scaffolding.
|
|
43
|
+
|
|
44
|
+
rails g fetty:scaffold post title:string content:editor photo:image attachment:file
|
|
45
|
+
|
|
46
|
+
== Fetty:Authentication
|
|
48
47
|
|
|
49
|
-
|
|
48
|
+
This generator will generate simple authentication for your rails app.
|
|
50
49
|
|
|
51
|
-
|
|
50
|
+
rails g fetty:authentication
|
|
52
51
|
|
|
53
|
-
|
|
52
|
+
after generate the authentication you may need to change root_url on 'config/routes.rb'
|
|
53
|
+
and setting your ActionMailer email address on 'config/initializers/setup_mail.rb'
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
* fetty:scaffold: generates a controller and optional model/migration.
|
|
57
|
-
* fetty:setup: configure your gems needed by fetty-generators.
|
|
55
|
+
== Fetty:Messages
|
|
58
56
|
|
|
59
|
-
|
|
57
|
+
This generator will generate simple messaging system for your rails app
|
|
60
58
|
|
|
61
|
-
rails g fetty:
|
|
59
|
+
rails g fetty:messages
|
|
62
60
|
|
|
61
|
+
Required you to have user model, please generate `fetty:authentication` first
|
|
62
|
+
at this moment `fetty:messages` only works with ActiveRecord.
|
|
63
|
+
|
|
64
|
+
== Test Framework
|
|
65
|
+
|
|
66
|
+
By default `fetty:setup` will asking you to setup Rspec / Cucumber,
|
|
67
|
+
and it also setup "guard-rspec" and "guard-cucumber".
|
|
63
68
|
|
|
64
69
|
== Found a bug?
|
|
65
70
|
|
|
66
|
-
This is stil under development mode, if you are
|
|
67
|
-
|
|
71
|
+
This is stil under development mode, if you are having some problem with Fetty Generators,
|
|
72
|
+
please submit an issue here.
|
|
68
73
|
|
|
69
74
|
http://github.com/fajrif/fetty-generators/issues
|
|
75
|
+
|
data/Rakefile
CHANGED
data/lib/generators/fetty.rb
CHANGED
|
@@ -1,22 +1,47 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rubygems/command.rb'
|
|
3
|
+
require 'rubygems/dependency_installer.rb'
|
|
1
4
|
require 'rails/generators/base'
|
|
5
|
+
require 'bundler'
|
|
2
6
|
|
|
3
7
|
module Fetty
|
|
4
8
|
module Generators
|
|
5
9
|
class Base < Rails::Generators::Base #:nodoc:
|
|
10
|
+
|
|
6
11
|
def self.source_root
|
|
7
|
-
@_fetty_source_root
|
|
12
|
+
@_fetty_source_root = File.expand_path(File.join(File.dirname(__FILE__), 'fetty', generator_name, 'templates'))
|
|
8
13
|
end
|
|
9
|
-
|
|
14
|
+
|
|
10
15
|
def self.banner
|
|
11
16
|
"rails generate fetty:#{generator_name} #{self.arguments.map{ |a| a.usage }.join(' ')} [options]"
|
|
12
17
|
end
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
|
|
19
|
+
protected
|
|
20
|
+
|
|
16
21
|
def add_gem(name, options = {})
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
unless gemfile_included? name
|
|
23
|
+
gemfile = File.expand_path(destination_path("Gemfile"), __FILE__)
|
|
24
|
+
gemfile_content = File.read(gemfile)
|
|
25
|
+
File.open(gemfile, 'a') { |f| f.write("\n") } unless gemfile_content =~ /\n\Z/
|
|
26
|
+
|
|
27
|
+
gem name, options
|
|
28
|
+
|
|
29
|
+
if bundle_need_refresh?
|
|
30
|
+
install_gem(name,options)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
rescue Exception => e
|
|
34
|
+
raise e
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def gemfile_included?(name)
|
|
38
|
+
file_contains?("Gemfile",name)
|
|
39
|
+
rescue Exception => e
|
|
40
|
+
raise e
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def root_path(path)
|
|
44
|
+
File.expand_path(File.join(File.dirname(__FILE__), 'fetty', path))
|
|
20
45
|
end
|
|
21
46
|
|
|
22
47
|
def destination_path(path)
|
|
@@ -27,12 +52,137 @@ module Fetty
|
|
|
27
52
|
File.exist? destination_path(path)
|
|
28
53
|
end
|
|
29
54
|
|
|
30
|
-
|
|
31
|
-
|
|
55
|
+
def folder_exists?(path)
|
|
56
|
+
File.directory? path
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def destroy(path)
|
|
60
|
+
begin
|
|
61
|
+
if file_exists?(path)
|
|
62
|
+
print_notes("Destroying #{path}")
|
|
63
|
+
FileUtils.rm_r(destination_path(path), :force => true)
|
|
64
|
+
end
|
|
65
|
+
rescue Exception => e
|
|
66
|
+
raise e
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def extract(filepath,destinationpath,foldername)
|
|
71
|
+
begin
|
|
72
|
+
print_notes("Extracting #{filepath}")
|
|
73
|
+
system("tar -C '#{destination_path(destinationpath)}' -xzf '#{root_path(filepath)}' #{foldername}/")
|
|
74
|
+
rescue Exception => e
|
|
75
|
+
raise e
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def asking(messages,&block)
|
|
80
|
+
opt = ask("=> #{messages} [yes]")
|
|
81
|
+
if opt == "yes" || opt.blank?
|
|
82
|
+
yield
|
|
83
|
+
end
|
|
84
|
+
rescue Exception => e
|
|
85
|
+
raise e
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def print_notes(message,notes = "notes",color = :yellow)
|
|
89
|
+
puts '', '='*80
|
|
90
|
+
say_status "#{notes}", "#{message}", color
|
|
91
|
+
puts '='*80, ''; sleep 0.5
|
|
92
|
+
end
|
|
93
|
+
|
|
32
94
|
def print_usage
|
|
33
95
|
self.class.help(Thor::Base.shell.new)
|
|
34
96
|
exit
|
|
35
97
|
end
|
|
98
|
+
|
|
99
|
+
def install_gem(name,options = {})
|
|
100
|
+
print_notes("Installing #{name}")
|
|
101
|
+
::Bundler.with_clean_env do
|
|
102
|
+
unless options.empty?
|
|
103
|
+
system("gem install #{name} -v=#{options}")
|
|
104
|
+
else
|
|
105
|
+
system("gem install #{name}")
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
rescue Exception => e
|
|
109
|
+
raise e
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def refresh_bundle
|
|
113
|
+
print_notes('Refresh bundle')
|
|
114
|
+
::Bundler.with_clean_env do
|
|
115
|
+
`bundle install`
|
|
116
|
+
end
|
|
117
|
+
rescue Exception => e
|
|
118
|
+
raise e
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def bundle_need_refresh?
|
|
122
|
+
::Bundler.with_clean_env do
|
|
123
|
+
`bundle check`
|
|
124
|
+
end
|
|
125
|
+
$? == 0 ? false : true
|
|
126
|
+
rescue Exception => e
|
|
127
|
+
raise e
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def file_contains?(filename,check_string)
|
|
131
|
+
file = File.expand_path(destination_path(filename), __FILE__)
|
|
132
|
+
if File.exist?(file)
|
|
133
|
+
file_content = File.read(file)
|
|
134
|
+
file_content.include?(check_string) ? true : false
|
|
135
|
+
else
|
|
136
|
+
false
|
|
137
|
+
end
|
|
138
|
+
rescue Exception => e
|
|
139
|
+
raise e
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def must_load_lib_directory
|
|
143
|
+
unless file_contains?("config/application.rb",'config.autoload_paths += %W(#{config.root}/lib)')
|
|
144
|
+
inject_into_file "config/application.rb", :after => "Rails::Application" do
|
|
145
|
+
"\n\t\t" + 'config.autoload_paths += %W(#{config.root}/lib)'
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
rescue Exception => e
|
|
149
|
+
raise e
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def using_cancan?
|
|
153
|
+
gemfile_included?("cancan") && file_exists?("app/models/ability.rb")
|
|
154
|
+
rescue Exception => e
|
|
155
|
+
raise e
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def using_mongoid?
|
|
159
|
+
gemfile_included?("mongoid") && file_exists?("config/mongoid.yml")
|
|
160
|
+
rescue Exception => e
|
|
161
|
+
raise e
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def using_test_unit?
|
|
165
|
+
folder_exists?("tests")
|
|
166
|
+
rescue Exception => e
|
|
167
|
+
raise e
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def using_rspec?
|
|
171
|
+
gemfile_included?("rspec") && folder_exists?("spec")
|
|
172
|
+
rescue Exception => e
|
|
173
|
+
raise e
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def using_fetty_authentication?
|
|
177
|
+
file_exists?("app/controllers/users_controller.rb") &&
|
|
178
|
+
file_exists?("app/controllers/sessions_controller.rb") &&
|
|
179
|
+
file_exists?("app/controllers/reset_passwords_controller.rb") &&
|
|
180
|
+
file_exists?("lib/users_authentication.rb")
|
|
181
|
+
rescue Exception => e
|
|
182
|
+
raise e
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
|
|
36
186
|
end
|
|
37
187
|
end
|
|
38
188
|
end
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
require 'generators/fetty'
|
|
2
|
+
require 'rails/generators/active_record'
|
|
3
|
+
require 'rails/generators/migration'
|
|
4
|
+
require 'rails/generators/generated_attribute'
|
|
5
|
+
|
|
6
|
+
module Fetty
|
|
7
|
+
module Generators
|
|
8
|
+
class AuthenticationGenerator < Base
|
|
9
|
+
include Rails::Generators::Migration
|
|
10
|
+
|
|
11
|
+
class_option :destroy, :desc => 'Destroy fetty:authentication', :type => :boolean, :default => false
|
|
12
|
+
|
|
13
|
+
def generate_authentication
|
|
14
|
+
if options.destroy?
|
|
15
|
+
destroy_authentication
|
|
16
|
+
else
|
|
17
|
+
unless using_fetty_authentication?
|
|
18
|
+
@orm = using_mongoid? ? 'mongoid' : 'active_record'
|
|
19
|
+
add_gem("bcrypt-ruby", :require => "bcrypt")
|
|
20
|
+
generate_users
|
|
21
|
+
generate_sessions
|
|
22
|
+
generate_reset_passwords
|
|
23
|
+
generate_mailers
|
|
24
|
+
edit_application_controller
|
|
25
|
+
must_load_lib_directory
|
|
26
|
+
add_routes
|
|
27
|
+
copy_file "views/layouts/application.html.erb", "app/views/layouts/application.html.erb"
|
|
28
|
+
generate_test_unit if using_test_unit?
|
|
29
|
+
generate_specs if using_rspec?
|
|
30
|
+
print_notes "Make sure you have defined root_url in your 'config/routes.rb.'"
|
|
31
|
+
else
|
|
32
|
+
raise "You already have User model, please remove first!!"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
rescue Exception => e
|
|
36
|
+
print_notes(e.message,"error",:red)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def generate_users
|
|
42
|
+
copy_file "controllers/users_controller.rb", "app/controllers/users_controller.rb"
|
|
43
|
+
copy_file "helpers/users_helper.rb", "app/helpers/users_helper.rb"
|
|
44
|
+
copy_file "lib/users_authentication.rb", "lib/users_authentication.rb"
|
|
45
|
+
copy_file "models/#{@orm}/user.rb", "app/models/user.rb"
|
|
46
|
+
migration_template "models/#{@orm}/create_users.rb", "db/migrate/create_users.rb" unless using_mongoid?
|
|
47
|
+
copy_file "views/users/index.html.erb", "app/views/users/index.html.erb"
|
|
48
|
+
copy_file "views/users/index.js.erb", "app/views/users/index.js.erb"
|
|
49
|
+
copy_file "views/users/_table.html.erb", "app/views/users/_table.html.erb"
|
|
50
|
+
copy_file "views/users/new.html.erb", "app/views/users/new.html.erb"
|
|
51
|
+
copy_file "views/users/edit.html.erb", "app/views/users/edit.html.erb"
|
|
52
|
+
copy_file "views/users/show.html.erb", "app/views/users/show.html.erb"
|
|
53
|
+
rescue Exception => e
|
|
54
|
+
raise e
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def generate_sessions
|
|
58
|
+
copy_file "controllers/sessions_controller.rb", "app/controllers/sessions_controller.rb"
|
|
59
|
+
copy_file "helpers/sessions_helper.rb", "app/helpers/sessions_helper.rb"
|
|
60
|
+
copy_file "lib/sessions_authentication.rb", "lib/sessions_authentication.rb"
|
|
61
|
+
copy_file "views/sessions/new.html.erb", "app/views/sessions/new.html.erb"
|
|
62
|
+
rescue Exception => e
|
|
63
|
+
raise e
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def generate_reset_passwords
|
|
67
|
+
copy_file "controllers/reset_passwords_controller.rb", "app/controllers/reset_passwords_controller.rb"
|
|
68
|
+
copy_file "helpers/reset_passwords_helper.rb", "app/helpers/reset_passwords_helper.rb"
|
|
69
|
+
copy_file "views/reset_passwords/new.html.erb", "app/views/reset_passwords/new.html.erb"
|
|
70
|
+
copy_file "views/reset_passwords/edit.html.erb", "app/views/reset_passwords/edit.html.erb"
|
|
71
|
+
rescue Exception => e
|
|
72
|
+
raise e
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def generate_mailers
|
|
76
|
+
copy_file "mailers/user_mailer.rb", "app/mailers/user_mailer.rb"
|
|
77
|
+
copy_file "mailers/setup_mail.rb", "config/initializers/setup_mail.rb"
|
|
78
|
+
print_notes "You need to change or edit 'config/initializers/setup_mail.rb'"
|
|
79
|
+
copy_file "views/user_mailer/user_activation.text.erb", "app/views/user_mailer/user_activation.text.erb"
|
|
80
|
+
copy_file "views/user_mailer/user_forgot_password.text.erb", "app/views/user_mailer/user_forgot_password.text.erb"
|
|
81
|
+
rescue Exception => e
|
|
82
|
+
raise e
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def edit_application_controller
|
|
86
|
+
inject_into_class "app/controllers/application_controller.rb", ApplicationController do
|
|
87
|
+
" include SessionsAuthentication\n" +
|
|
88
|
+
" before_filter :authenticate_user!\n"
|
|
89
|
+
end
|
|
90
|
+
rescue Exception => e
|
|
91
|
+
raise e
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def add_routes
|
|
95
|
+
inject_into_file "config/routes.rb", :after => "Application.routes.draw do" do
|
|
96
|
+
"\n\n\t resources :users do" +
|
|
97
|
+
"\n\t collection do" +
|
|
98
|
+
"\n\t get 'activate/:id/:token' => 'users#activate', :as => 'activate'" +
|
|
99
|
+
"\n\t resource :session, :only => [:new, :destroy, :create]" +
|
|
100
|
+
"\n\t resource :reset_password, :only => [:new, :create, :update] do" +
|
|
101
|
+
"\n\t get ':id/:token' => 'reset_passwords#edit', :on => :collection, :as => 'edit'" +
|
|
102
|
+
"\n\t end" +
|
|
103
|
+
"\n\t end" +
|
|
104
|
+
"\n\t end\n"
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def generate_test_unit
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def generate_specs
|
|
113
|
+
copy_file "spec/controllers/users_controller_spec.rb", "spec/controllers/users_controller_spec.rb"
|
|
114
|
+
copy_file "spec/models/user_spec.rb", "spec/models/user_spec.rb"
|
|
115
|
+
copy_file "spec/routing/users_routing_spec.rb", "spec/routing/users_routing_spec.rb"
|
|
116
|
+
copy_file "spec/support/user_factories.rb", "spec/support/user_factories.rb"
|
|
117
|
+
copy_file "spec/controllers/sessions_controller_spec.rb", "spec/controllers/sessions_controller_spec.rb"
|
|
118
|
+
copy_file "spec/routing/sessions_routing_spec.rb", "spec/routing/sessions_routing_spec.rb"
|
|
119
|
+
copy_file "spec/controllers/reset_passwords_controller_spec.rb", "spec/controllers/reset_passwords_controller_spec.rb"
|
|
120
|
+
copy_file "spec/routing/reset_passwords_routing_spec.rb", "spec/routing/reset_passwords_routing_spec.rb"
|
|
121
|
+
rescue Exception => e
|
|
122
|
+
raise e
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def destroy_authentication
|
|
126
|
+
asking "Are you sure want to destroy fetty:authentication?" do
|
|
127
|
+
remove_file 'app/controllers/users_controller.rb'
|
|
128
|
+
remove_file 'app/helpers/users_helper.rb'
|
|
129
|
+
remove_file 'lib/users_authentication.rb'
|
|
130
|
+
remove_file 'app/models/user.rb'
|
|
131
|
+
run('rm db/migrate/*_create_users.rb')
|
|
132
|
+
remove_dir 'app/views/users'
|
|
133
|
+
remove_file 'app/controllers/sessions_controller.rb'
|
|
134
|
+
remove_file 'app/helpers/sessions_helper.rb'
|
|
135
|
+
remove_file 'lib/sessions_authentication.rb'
|
|
136
|
+
remove_dir 'app/views/sessions'
|
|
137
|
+
remove_file 'app/controllers/reset_passwords_controller.rb'
|
|
138
|
+
remove_file 'app/helpers/reset_passwords_helper.rb'
|
|
139
|
+
remove_dir 'app/views/reset_passwords'
|
|
140
|
+
remove_file 'app/mailers/user_mailer.rb'
|
|
141
|
+
remove_file 'config/initializers/setup_mail.rb'
|
|
142
|
+
remove_dir 'app/views/user_mailer'
|
|
143
|
+
|
|
144
|
+
gsub_file 'app/controllers/application_controller.rb', /include SessionsAuthentication.*:authenticate_user!/m, ''
|
|
145
|
+
gsub_file 'config/routes.rb', /resources :users.*(\s*end){3}/m, ''
|
|
146
|
+
|
|
147
|
+
if using_test_unit?
|
|
148
|
+
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
if using_rspec?
|
|
152
|
+
remove_file 'spec/controllers/users_controller_spec.rb'
|
|
153
|
+
remove_file 'spec/models/user_spec.rb'
|
|
154
|
+
remove_file 'spec/routing/users_routing_spec.rb'
|
|
155
|
+
remove_file 'spec/support/user_factories.rb'
|
|
156
|
+
remove_file 'spec/controllers/sessions_controller_spec.rb'
|
|
157
|
+
remove_file 'spec/routing/sessions_routing_spec.rb'
|
|
158
|
+
remove_file 'spec/controllers/reset_passwords_controller_spec.rb'
|
|
159
|
+
remove_file 'spec/routing/reset_passwords_routing_spec.rb'
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# FIXME: Should be proxied to ActiveRecord::Generators::Base
|
|
165
|
+
# Implement the required interface for Rails::Generators::Migration.
|
|
166
|
+
def self.next_migration_number(dirname) #:nodoc:
|
|
167
|
+
ActiveRecord::Generators::Base.next_migration_number(dirname)
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|