bridgescaffold 1.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.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +2 -0
- data/auto-build-gem.sh +3 -0
- data/bin/bridgescaffold +11 -0
- data/bridgescaffold.gemspec +23 -0
- data/lib/bridgescaffold.rb +5 -0
- data/lib/bridgescaffold/actions.rb +18 -0
- data/lib/bridgescaffold/app_builder.rb +21 -0
- data/lib/bridgescaffold/generators/app_generator.rb +75 -0
- data/lib/bridgescaffold/layout_actions.rb +53 -0
- data/lib/bridgescaffold/version.rb +3 -0
- data/spec/bridgescaffold_spec.rb +7 -0
- data/spec/spec_helper.rb +2 -0
- data/templates/change_index_for_default_file.html.erb.erb +29 -0
- metadata +78 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6c07bb4df7a9e31db78474643ef710d6d095eac1
|
4
|
+
data.tar.gz: 66c8162ba5359d49af555d2d30f9060c628c368c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 858744af43445643d3d76f476166f4f695933e3dc56a1d228d5b7bd6bf962f13beec1bc10d91acfb675a879abf3a6378b83f2a2f8a121581fa973933c813879a
|
7
|
+
data.tar.gz: f39962330e7654e13505a9e83202f721edb1f36441d117e47f9984dbbc539575c3f7867b55158a2f6dcf059a417dca93a829ce41254f0112940f27d571edd682
|
data/.gitignore
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
*.bundle
|
19
|
+
*.so
|
20
|
+
*.o
|
21
|
+
*.a
|
22
|
+
mkmf.log
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Whien
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Bridgescaffold
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'bridgescaffold'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install bridgescaffold
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
$ bridgescaffold project_name
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it ( https://github.com/[my-github-username]/bridgescaffold/fork )
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/auto-build-gem.sh
ADDED
data/bin/bridgescaffold
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require File.expand_path(File.join('..', 'lib', 'bridgescaffold', 'generators', 'app_generator'), File.dirname(__FILE__))
|
3
|
+
require File.expand_path(File.join('..', 'lib', 'bridgescaffold', 'actions'), File.dirname(__FILE__))
|
4
|
+
require File.expand_path(File.join('..', 'lib', 'bridgescaffold', 'layout_actions'), File.dirname(__FILE__))
|
5
|
+
require File.expand_path(File.join('..', 'lib', 'bridgescaffold', 'app_builder'), File.dirname(__FILE__))
|
6
|
+
|
7
|
+
templates_root = File.expand_path(File.join("..", "templates"), File.dirname(__FILE__))
|
8
|
+
|
9
|
+
Bridgescaffold::AppGenerator.source_root templates_root
|
10
|
+
Bridgescaffold::AppGenerator.source_paths << Rails::Generators::AppGenerator.source_root << templates_root
|
11
|
+
Bridgescaffold::AppGenerator.start
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'bridgescaffold/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "bridgescaffold"
|
8
|
+
spec.version = Bridgescaffold::VERSION
|
9
|
+
spec.authors = ["Whien"]
|
10
|
+
spec.email = ["sal95610@gmail.com"]
|
11
|
+
spec.summary = "bridgescaffold summary"
|
12
|
+
spec.description = "bridgescaffold description"
|
13
|
+
spec.homepage = "https://github.com/madeinfree/bridgescaffold.git"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
#spec.add_development_dependency 'rails', '~> 4.0.0'
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
23
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Bridgescaffold
|
2
|
+
module Actions
|
3
|
+
|
4
|
+
def replace_in_file(relative_path, find, replace)
|
5
|
+
path = File.join(destination_root, relative_path)
|
6
|
+
contents = IO.read(path)
|
7
|
+
unless contents.gsub!(find, replace)
|
8
|
+
raise "#{find.inspect} not found in #{relative_path}"
|
9
|
+
end
|
10
|
+
File.open(path, "w") { |file| file.write(contents) }
|
11
|
+
end
|
12
|
+
|
13
|
+
def add_def_in_file(relative_path, def_method)
|
14
|
+
replace_in_file(relative_path, /end\s*private/, def_method)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Bridgescaffold
|
2
|
+
class AppBuilder < Rails::AppBuilder
|
3
|
+
|
4
|
+
include Bridgescaffold::Actions
|
5
|
+
include Bridgescaffold::LayoutActions
|
6
|
+
|
7
|
+
def remove_routes_comment_and_add_scaffol_route
|
8
|
+
replace_in_file 'config/routes.rb', /Rails\.application\.routes\.draw do.*end/m, "Rails.application.routes.draw do\nend"
|
9
|
+
route "root 'topics#index'\nresources :topics do\nmember do\npost 'upvote'\nend\nend"
|
10
|
+
end
|
11
|
+
|
12
|
+
def add_controller_def_in_topics_file
|
13
|
+
add_def_in_file 'app/controllers/topics_controller.rb', "end\ndef upvote\n@topic = Topic.find(params[:id])\n@topic.votes.create\nredirect_to(topics_path)\nend\nprivate"
|
14
|
+
end
|
15
|
+
|
16
|
+
def add_template_file
|
17
|
+
template 'change_index_for_default_file.html.erb.erb', 'app/views/topics/index.html.erb', :force => true
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/rails/app/app_generator'
|
3
|
+
|
4
|
+
module Bridgescaffold
|
5
|
+
class AppGenerator < Rails::Generators::AppGenerator
|
6
|
+
|
7
|
+
def finish_template
|
8
|
+
super
|
9
|
+
end
|
10
|
+
|
11
|
+
def setup_scaffold
|
12
|
+
build :generate_scaffold
|
13
|
+
invoke :change_scaffold_default_route
|
14
|
+
end
|
15
|
+
|
16
|
+
def change_scaffold_default_route
|
17
|
+
invoke :remove_routes_comment_and_add_scaffol_route
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
def setup_migrate
|
22
|
+
build :database_migrate
|
23
|
+
end
|
24
|
+
|
25
|
+
def remove_routes_comment_and_add_scaffol_route
|
26
|
+
build :remove_routes_comment_and_add_scaffol_route
|
27
|
+
end
|
28
|
+
|
29
|
+
def setup_votes
|
30
|
+
build :generator_vote_model
|
31
|
+
end
|
32
|
+
|
33
|
+
def add_topic_vote_association
|
34
|
+
build :add_topic_association
|
35
|
+
build :add_vote_association
|
36
|
+
end
|
37
|
+
|
38
|
+
def add_controller_def_in_topics_file
|
39
|
+
build :add_controller_def_in_topics_file
|
40
|
+
end
|
41
|
+
|
42
|
+
def add_template_file
|
43
|
+
build :add_template_file
|
44
|
+
end
|
45
|
+
|
46
|
+
def change_controller_topic_create_update_path
|
47
|
+
build :change_controller_topic_create_update_path
|
48
|
+
end
|
49
|
+
|
50
|
+
def add_flash_in_index
|
51
|
+
build :add_flash_in_index
|
52
|
+
end
|
53
|
+
|
54
|
+
def remove_somthing_description
|
55
|
+
build :remove_somthing_description
|
56
|
+
end
|
57
|
+
|
58
|
+
def change_topic_title_to_link
|
59
|
+
build :change_topic_title_to_link
|
60
|
+
end
|
61
|
+
|
62
|
+
def remove_topic_index_show_edit_link
|
63
|
+
build :remove_topic_index_show_edit_link
|
64
|
+
end
|
65
|
+
|
66
|
+
def change_topic_index_destroy_to_delete
|
67
|
+
build :change_topic_index_destroy_to_delete
|
68
|
+
end
|
69
|
+
|
70
|
+
def get_builder_class
|
71
|
+
Bridgescaffold::AppBuilder
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Bridgescaffold
|
2
|
+
module LayoutActions
|
3
|
+
|
4
|
+
def generate_scaffold
|
5
|
+
generate 'scaffold topic title:string description:text'
|
6
|
+
end
|
7
|
+
|
8
|
+
def database_migrate
|
9
|
+
run 'rake db:migrate'
|
10
|
+
end
|
11
|
+
|
12
|
+
def generator_vote_model
|
13
|
+
generate 'model vote topic_id:integer'
|
14
|
+
build :database_migrate
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_topic_association
|
18
|
+
replace_in_file 'app/models/topic.rb', /class Topic < ActiveRecord::Base\nend/, "class Topic < ActiveRecord::Base\nhas_many :votes, dependent: :destroy\nend"
|
19
|
+
end
|
20
|
+
|
21
|
+
def add_vote_association
|
22
|
+
replace_in_file 'app/models/vote.rb', /class Vote < ActiveRecord::Base\nend/, "class Vote < ActiveRecord::Base\nbelongs_to :topic\nend"
|
23
|
+
end
|
24
|
+
|
25
|
+
def change_controller_topic_create_update_path
|
26
|
+
replace_in_file 'app/controllers/topics_controller.rb', /format.html { redirect_to @topic, notice: 'Topic was successfully created.' }/, "format.html { redirect_to topics_path, notice: 'Topic was successfully created.' }"
|
27
|
+
replace_in_file 'app/controllers/topics_controller.rb', /format.html { redirect_to @topic, notice: 'Topic was successfully updated.' }/, "format.html { redirect_to topics_path, notice: 'Topic was successfully updated.' }"
|
28
|
+
end
|
29
|
+
|
30
|
+
def add_flash_in_index
|
31
|
+
replace_in_file 'app/views/layouts/application.html.erb', /<body>\s/, "<body>\n<% flash.each do |name, msg| %>\n<div><%= msg %></div>\n<% end %>"
|
32
|
+
end
|
33
|
+
|
34
|
+
def remove_somthing_description
|
35
|
+
replace_in_file 'app/views/topics/index.html.erb', /<td><%= topic.description %><\/td>/, ""
|
36
|
+
replace_in_file 'app/views/topics/index.html.erb', /<th>Description<\/th>/, ""
|
37
|
+
end
|
38
|
+
|
39
|
+
def change_topic_title_to_link
|
40
|
+
replace_in_file 'app/views/topics/index.html.erb', /<td><%= topic.title %><\/td>/, "<td><%= link_to topic.title, topic %></td>"
|
41
|
+
end
|
42
|
+
|
43
|
+
def remove_topic_index_show_edit_link
|
44
|
+
replace_in_file 'app/views/topics/index.html.erb', /<td><%= link_to 'Show', topic %><\/td>/, ""
|
45
|
+
replace_in_file 'app/views/topics/index.html.erb', /<td><%= link_to 'Edit', edit_topic_path\(topic\) %><\/td>/, ""
|
46
|
+
end
|
47
|
+
|
48
|
+
def change_topic_index_destroy_to_delete
|
49
|
+
replace_in_file 'app/views/topics/index.html.erb', /Destroy/, "delete"
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
<h1>Listing topics</h1>
|
2
|
+
|
3
|
+
<table>
|
4
|
+
<thead>
|
5
|
+
<tr>
|
6
|
+
<th>Title</th>
|
7
|
+
<th>Description</th>
|
8
|
+
<th colspan="3"></th>
|
9
|
+
</tr>
|
10
|
+
</thead>
|
11
|
+
|
12
|
+
<tbody>
|
13
|
+
<%% @topics.each do |topic| %>
|
14
|
+
<tr>
|
15
|
+
<td><%%= topic.title %></td>
|
16
|
+
<td><%%= topic.description %></td>
|
17
|
+
<td><%%= pluralize(topic.votes.count, "vote") %></td>
|
18
|
+
<td><%%= button_to '+1', upvote_topic_path(topic), method: :post %></td>
|
19
|
+
<td><%%= link_to 'Show', topic %></td>
|
20
|
+
<td><%%= link_to 'Edit', edit_topic_path(topic) %></td>
|
21
|
+
<td><%%= link_to 'Destroy', topic, method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
22
|
+
</tr>
|
23
|
+
<%% end %>
|
24
|
+
</tbody>
|
25
|
+
</table>
|
26
|
+
|
27
|
+
<br>
|
28
|
+
|
29
|
+
<%%= link_to 'New Topic', new_topic_path %>
|
metadata
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bridgescaffold
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Whien
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-07-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
description: bridgescaffold description
|
28
|
+
email:
|
29
|
+
- sal95610@gmail.com
|
30
|
+
executables:
|
31
|
+
- bridgescaffold
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- ".gitignore"
|
36
|
+
- Gemfile
|
37
|
+
- LICENSE.txt
|
38
|
+
- README.md
|
39
|
+
- Rakefile
|
40
|
+
- auto-build-gem.sh
|
41
|
+
- bin/bridgescaffold
|
42
|
+
- bridgescaffold.gemspec
|
43
|
+
- lib/bridgescaffold.rb
|
44
|
+
- lib/bridgescaffold/actions.rb
|
45
|
+
- lib/bridgescaffold/app_builder.rb
|
46
|
+
- lib/bridgescaffold/generators/app_generator.rb
|
47
|
+
- lib/bridgescaffold/layout_actions.rb
|
48
|
+
- lib/bridgescaffold/version.rb
|
49
|
+
- spec/bridgescaffold_spec.rb
|
50
|
+
- spec/spec_helper.rb
|
51
|
+
- templates/change_index_for_default_file.html.erb.erb
|
52
|
+
homepage: https://github.com/madeinfree/bridgescaffold.git
|
53
|
+
licenses:
|
54
|
+
- MIT
|
55
|
+
metadata: {}
|
56
|
+
post_install_message:
|
57
|
+
rdoc_options: []
|
58
|
+
require_paths:
|
59
|
+
- lib
|
60
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
requirements: []
|
71
|
+
rubyforge_project:
|
72
|
+
rubygems_version: 2.3.0
|
73
|
+
signing_key:
|
74
|
+
specification_version: 4
|
75
|
+
summary: bridgescaffold summary
|
76
|
+
test_files:
|
77
|
+
- spec/bridgescaffold_spec.rb
|
78
|
+
- spec/spec_helper.rb
|