wired 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +11 -1
- data/lib/wired/app_builder.rb +125 -0
- data/lib/wired/generators/app_generator.rb +80 -14
- data/lib/wired/version.rb +1 -1
- data/templates/Gemfile_clean +1 -0
- data/templates/README.md.erb +17 -0
- data/templates/facebook/export_controller.rb +13 -0
- data/templates/facebook/safari-cookie-fix.js.coffee +4 -0
- data/templates/facebook/tab_controller.rb +37 -0
- data/templates/wired_gitignore +3 -0
- data/wired.gemspec +1 -1
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OTBlZjBiYTBhYWM0NzBkNjhkNzcyZWM2ODJiMDIzMGY4MzhkMDFmOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
M2Y2NDRjMGY1NjFmMDVkOTgzZmU3NDk1YmY0ZTlhOTllNWY1Nzg0OA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YjBmMmM2YjAyMTZkYWMwYWE4ZTUwYmMxZDc2MjllYWQ2MDQ2MjY1MjFhZTY0
|
10
|
+
YjJkOTc4ZjdhOTFhOTViNzQ5YzE0ZmVmNTJmNjNhMzY2Njc0ODFiNTM3ODMz
|
11
|
+
MTAzZGQ0ZTNhZGVkNThiYmIwZTlkMGVkMjE4MTliYjgzODE4NDE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YzI5MmJlM2YzNjU2ZjEwNTU3YmRjNGE3MGM1M2YwM2MwNWI0MzI2ZWYzYTRk
|
14
|
+
ZGIxODljNTU2YWIyMWRjM2I2OTJlMjY3MWRkNmQ3ZTMwOGUwM2RhM2QwOTIz
|
15
|
+
NjQ0ZmIwMmYxNDcwN2EyNDFmODEyNjhiMWQyZTFlZDE1MTgyNDA=
|
data/README.md
CHANGED
@@ -4,6 +4,16 @@ About
|
|
4
4
|
---
|
5
5
|
This gem is for internal use and heavily based on (you might even say mostly copy-pasted from) Suspenders, if you found this gem you will probably want to check them out: [Suspenders by Thoughtbot](http://github.com/thoughtbot/suspenders).
|
6
6
|
|
7
|
+
Requirements
|
8
|
+
---
|
9
|
+
* [Heroku toolbelt](https://toolbelt.heroku.com)
|
10
|
+
* [Hub](https://github.com/defunkt/hub)
|
11
|
+
|
7
12
|
Installation
|
8
13
|
---
|
9
|
-
gem install wired
|
14
|
+
`gem install wired`
|
15
|
+
|
16
|
+
Usage
|
17
|
+
---
|
18
|
+
`wired app_name`
|
19
|
+
|
data/lib/wired/app_builder.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
module Wired
|
2
2
|
class AppBuilder < Rails::AppBuilder
|
3
3
|
include Wired::Actions
|
4
|
+
|
5
|
+
def readme
|
6
|
+
template 'README.md.erb', 'README.md'
|
7
|
+
remove_dir 'doc'
|
8
|
+
end
|
9
|
+
|
4
10
|
def remove_public_index
|
5
11
|
remove_file 'public/index.html'
|
6
12
|
end
|
@@ -49,5 +55,124 @@ module Wired
|
|
49
55
|
RUBY
|
50
56
|
inject_into_class 'config/application.rb', 'Application', config
|
51
57
|
end
|
58
|
+
|
59
|
+
def customize_error_pages
|
60
|
+
meta_tags =<<-EOS
|
61
|
+
<meta charset='utf-8' />
|
62
|
+
EOS
|
63
|
+
|
64
|
+
%w(500 404 422).each do |page|
|
65
|
+
inject_into_file "public/#{page}.html", meta_tags, :after => "<head>\n"
|
66
|
+
replace_in_file "public/#{page}.html", /<!--.+-->\n/, ''
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def remove_routes_comment_lines
|
71
|
+
replace_in_file 'config/routes.rb',
|
72
|
+
/Application\.routes\.draw do.*end/m,
|
73
|
+
"Application.routes.draw do\nend"
|
74
|
+
end
|
75
|
+
|
76
|
+
def gitignore_files
|
77
|
+
concat_file 'wired_gitignore', '.gitignore'
|
78
|
+
[
|
79
|
+
'app/models',
|
80
|
+
'app/assets/images',
|
81
|
+
'app/views/pages',
|
82
|
+
'db/migrate',
|
83
|
+
'log',
|
84
|
+
'spec/support',
|
85
|
+
'spec/lib',
|
86
|
+
'spec/models',
|
87
|
+
'spec/views',
|
88
|
+
'spec/controllers',
|
89
|
+
'spec/helpers',
|
90
|
+
'spec/support/matchers',
|
91
|
+
'spec/support/mixins',
|
92
|
+
'spec/support/shared_examples'
|
93
|
+
].each do |dir|
|
94
|
+
empty_directory_with_gitkeep dir
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def setup_git
|
99
|
+
run 'git init'
|
100
|
+
run "hub create -p wirelab/#{app_name}"
|
101
|
+
run "git add ."
|
102
|
+
run "git commit -m 'initial commit'"
|
103
|
+
run "git checkout -b develop"
|
104
|
+
run "git push --all"
|
105
|
+
end
|
106
|
+
|
107
|
+
def powder_link
|
108
|
+
run 'powder link'
|
109
|
+
end
|
110
|
+
|
111
|
+
def update_readme_for_facebook
|
112
|
+
append_file "README.md", "* FB_APP_ID\n* FB_PAGE_NAME"
|
113
|
+
facebook_readme =<<-FACEBOOK
|
114
|
+
# Facebook Apps
|
115
|
+
* [Production](https://developers.facebook.com/apps/FB_APP_ID) _FB_APP_ID_
|
116
|
+
* [Acceptance](https://developers.facebook.com/apps/) _FB_APP_ID_
|
117
|
+
* [Staging](https://developers.facebook.com/apps/FB_APP_ID) _FB_APP_ID_
|
118
|
+
* [Development](https://developers.facebook.com/apps/FB_APP_ID) _FB_APP_ID_
|
119
|
+
|
120
|
+
***
|
121
|
+
|
122
|
+
FACEBOOK
|
123
|
+
inject_into_file "README.md", facebook_readme, :before => "# Variables\n"
|
124
|
+
end
|
125
|
+
|
126
|
+
def add_facebook_routes
|
127
|
+
facebook_routes =<<-ROUTES
|
128
|
+
root :to => 'tab#home'
|
129
|
+
match "fangate" => "tab#fangate", as: 'fangate'
|
130
|
+
|
131
|
+
#safari cookie fix
|
132
|
+
get 'cookie' => 'application#cookie', as: 'cookie'
|
133
|
+
|
134
|
+
#admin
|
135
|
+
get 'admin/export' => 'admin#export'
|
136
|
+
ROUTES
|
137
|
+
inject_into_file "config/routes.rb", facebook_routes, :before => "end"
|
138
|
+
end
|
139
|
+
|
140
|
+
def add_facebook_controllers
|
141
|
+
copy_file 'facebook/tab_controller.rb', 'app/controllers/tab_controller.rb'
|
142
|
+
copy_file 'facebook/export_controller.rb', 'app/controllers/export_controller.rb'
|
143
|
+
end
|
144
|
+
|
145
|
+
def create_facebook_views
|
146
|
+
empty_directory 'app/views/tab'
|
147
|
+
%w(fangate home).each do |page|
|
148
|
+
File.open("app/views/tab/#{page}.html.erb", 'w') { |file| file.write(page) }
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def add_safari_cookie_fix
|
153
|
+
facebook_cookie_fix =<<-COOKIE_FIX
|
154
|
+
before_filter :safari_cookie_fix
|
155
|
+
|
156
|
+
def cookie
|
157
|
+
#safari third party cookie fix
|
158
|
+
end
|
159
|
+
|
160
|
+
private
|
161
|
+
|
162
|
+
def safari_cookie_fix
|
163
|
+
cookies[:safari_cookie_fix] = "cookie" #safari third party cookie fix
|
164
|
+
end
|
165
|
+
COOKIE_FIX
|
166
|
+
inject_into_file "app/controllers/application_controller.rb", facebook_cookie_fix, :before => "end"
|
167
|
+
copy_file 'facebook/safari-cookie-fix.js.coffee', 'app/assets/javascripts/safari-cookie-fix.js.coffee'
|
168
|
+
end
|
169
|
+
|
170
|
+
def create_heroku_apps
|
171
|
+
%w(staging acceptance production).each do |env|
|
172
|
+
run "heroku create #{app_name}-#{env} --remote=#{env}"
|
173
|
+
run "heroku sharing:add algemeen@wirelab.nl --remote=#{env}"
|
174
|
+
run "heroku sharing:transfer algemeen@wirelab.nl --remote=#{env}"
|
175
|
+
end
|
176
|
+
end
|
52
177
|
end
|
53
178
|
end
|
@@ -3,8 +3,7 @@ require 'rails/generators/rails/app/app_generator'
|
|
3
3
|
|
4
4
|
module Wired
|
5
5
|
class AppGenerator < Rails::Generators::AppGenerator
|
6
|
-
|
7
|
-
:desc => 'Skip Test::Unit files'
|
6
|
+
@@type = ""
|
8
7
|
|
9
8
|
def finish_template
|
10
9
|
invoke :wired_customization
|
@@ -17,14 +16,50 @@ module Wired
|
|
17
16
|
invoke :create_wired_views
|
18
17
|
invoke :setup_database
|
19
18
|
invoke :configure_app
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
#invoke :create_heroku_apps
|
26
|
-
#invoke :create_github_repo
|
19
|
+
invoke :customize_error_pages
|
20
|
+
invoke :remove_routes_comment_lines
|
21
|
+
invoke :application_setup
|
22
|
+
invoke :setup_git
|
23
|
+
invoke :create_heroku_apps
|
27
24
|
invoke :outro
|
25
|
+
invoke :todo
|
26
|
+
end
|
27
|
+
|
28
|
+
def application_setup
|
29
|
+
build :powder_link
|
30
|
+
|
31
|
+
choices = ["facebook", "teaser"]
|
32
|
+
type = ask "Applicationtype? (#{choices.join ', '})"
|
33
|
+
if choices.include? type
|
34
|
+
@@type = type
|
35
|
+
case type
|
36
|
+
when "facebook"
|
37
|
+
say "Setting up a Facebook application"
|
38
|
+
invoke :facebook_setup
|
39
|
+
when "teaser"
|
40
|
+
say "Setting up a teaser with email registration"
|
41
|
+
#invoke :teaser_setup
|
42
|
+
end
|
43
|
+
else
|
44
|
+
say "Applicationtype should be one of: #{choices.join ', '}"
|
45
|
+
invoke :application_setup
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def facebook_setup
|
50
|
+
if @@type == "facebook"
|
51
|
+
build :update_readme_for_facebook
|
52
|
+
build :add_facebook_routes
|
53
|
+
build :add_facebook_controllers
|
54
|
+
build :create_facebook_views
|
55
|
+
build :add_safari_cookie_fix
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def teaser_setup
|
60
|
+
if @@type == "teaser"
|
61
|
+
say "There's no teaser setup yet"
|
62
|
+
end
|
28
63
|
end
|
29
64
|
|
30
65
|
def remove_files_we_dont_need
|
@@ -57,8 +92,43 @@ module Wired
|
|
57
92
|
build :add_email_validator
|
58
93
|
end
|
59
94
|
|
95
|
+
def copy_miscellaneous_files
|
96
|
+
build :copy_miscellaneous_files
|
97
|
+
end
|
98
|
+
|
99
|
+
def customize_error_pages
|
100
|
+
say 'Customizing the 500/404/422 pages'
|
101
|
+
build :customize_error_pages
|
102
|
+
end
|
103
|
+
|
104
|
+
def remove_routes_comment_lines
|
105
|
+
build :remove_routes_comment_lines
|
106
|
+
end
|
107
|
+
|
108
|
+
def setup_git
|
109
|
+
say 'Setting up git'
|
110
|
+
build :gitignore_files
|
111
|
+
build :setup_git
|
112
|
+
end
|
113
|
+
|
114
|
+
def create_heroku_apps
|
115
|
+
say 'Creating Heroku apps'
|
116
|
+
build :create_heroku_apps
|
117
|
+
end
|
118
|
+
|
60
119
|
def outro
|
61
|
-
say
|
120
|
+
say " _ _ _ ___ ___ _ ___ ___ \n | || || || - > | __>| | / - \\| - >\n | || || \\ | __>| |_ | | || _ \\\n |_/\\_||_||_|\\_\\|___>|___||_|_||___/\n"
|
121
|
+
end
|
122
|
+
|
123
|
+
def todo
|
124
|
+
say "\n ------TODO------"
|
125
|
+
case @@type
|
126
|
+
when "facebook"
|
127
|
+
say "* Create Facebook apps on https://developers.facebook.com"
|
128
|
+
say "* Update FB_APP_ID env variables locally, on Heroku and in the readme"
|
129
|
+
when "teaser"
|
130
|
+
say "* Build entire app"
|
131
|
+
end
|
62
132
|
end
|
63
133
|
|
64
134
|
def run_bundle
|
@@ -70,9 +140,5 @@ module Wired
|
|
70
140
|
def get_builder_class
|
71
141
|
Wired::AppBuilder
|
72
142
|
end
|
73
|
-
|
74
|
-
def using_active_record?
|
75
|
-
!options[:skip_active_record]
|
76
|
-
end
|
77
143
|
end
|
78
144
|
end
|
data/lib/wired/version.rb
CHANGED
data/templates/Gemfile_clean
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
# Description
|
2
|
+
|
3
|
+
***
|
4
|
+
|
5
|
+
# Environments
|
6
|
+
* [Production](http://<%= app_name %>.herokuapp.com) _git@heroku.com:<%= app_name %>.git_
|
7
|
+
* [Acceptance](http://<%= app_name %>-acceptance.herokuapp.com) _git@heroku.com:<%= app_name %>-acceptance.git_
|
8
|
+
* [Staging](http://<%= app_name %>-staging.herokuapp.com) _git@heroku.com:<%= app_name %>-staging.git_
|
9
|
+
|
10
|
+
***
|
11
|
+
|
12
|
+
# Variables
|
13
|
+
* AWS_ACCESS_KEY_ID
|
14
|
+
* AWS_SECRET_ACCESS_KEY
|
15
|
+
* ASSET_HOST
|
16
|
+
* FOG_DIRECTORY
|
17
|
+
* FOG_PROVIDER
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class ExportController < ApplicationController
|
2
|
+
before_filter :authenticate
|
3
|
+
def index
|
4
|
+
render 'export', layout: false
|
5
|
+
end
|
6
|
+
|
7
|
+
private
|
8
|
+
def authenticate
|
9
|
+
authenticate_or_request_with_http_basic do |username, password|
|
10
|
+
username == 'USER_NAME' && password == 'PASSWORD'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class TabController < ApplicationController
|
2
|
+
include Mobylette::RespondToMobileRequests
|
3
|
+
|
4
|
+
def home
|
5
|
+
if params[:signed_request]
|
6
|
+
redirect_to :fangate unless liked?
|
7
|
+
else
|
8
|
+
redirect_to "http://www.facebook.com/#{ENV['FB_PAGE_NAME']}/app_#{ENV['FB_APP_ID']}" unless is_mobile_view?
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def fangate
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
def liked?
|
17
|
+
if params[:signed_request]
|
18
|
+
encoded_request = params[:signed_request]
|
19
|
+
json_request = decode_data(encoded_request)
|
20
|
+
signed_request = JSON.parse(json_request)
|
21
|
+
signed_request['page']['liked']
|
22
|
+
else
|
23
|
+
false
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def base64_url_decode str
|
28
|
+
encoded_str = str.gsub('-','+').gsub('_','/')
|
29
|
+
encoded_str += '=' while !(encoded_str.size % 4).zero?
|
30
|
+
Base64.decode64(encoded_str)
|
31
|
+
end
|
32
|
+
|
33
|
+
def decode_data(signed_request)
|
34
|
+
encoded_sig, payload = signed_request.split('.')
|
35
|
+
data = base64_url_decode(payload)
|
36
|
+
end
|
37
|
+
end
|
data/wired.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.version = Wired::VERSION
|
9
9
|
s.date = Date.today.strftime('%Y-%m-%d')
|
10
10
|
s.summary = 'Wirelab Generator'
|
11
|
-
s.description = '
|
11
|
+
s.description = 'The Wirelab application generator'
|
12
12
|
s.authors = ['Wirelab Creative']
|
13
13
|
s.email = 'bart@wirelab.nl'
|
14
14
|
s.homepage = 'https://github.com/Wirelab/wired'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wired
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wirelab Creative
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -52,7 +52,7 @@ dependencies:
|
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.10.5
|
55
|
-
description:
|
55
|
+
description: The Wirelab application generator
|
56
56
|
email: bart@wirelab.nl
|
57
57
|
executables:
|
58
58
|
- wired
|
@@ -68,10 +68,15 @@ files:
|
|
68
68
|
- lib/wired/generators/app_generator.rb
|
69
69
|
- lib/wired/version.rb
|
70
70
|
- templates/Gemfile_clean
|
71
|
+
- templates/README.md.erb
|
71
72
|
- templates/_flashes.html.erb
|
72
73
|
- templates/database.yml.erb
|
73
74
|
- templates/email_validator.rb
|
75
|
+
- templates/facebook/export_controller.rb
|
76
|
+
- templates/facebook/safari-cookie-fix.js.coffee
|
77
|
+
- templates/facebook/tab_controller.rb
|
74
78
|
- templates/layout.html.erb.erb
|
79
|
+
- templates/wired_gitignore
|
75
80
|
- wired.gemspec
|
76
81
|
homepage: https://github.com/Wirelab/wired
|
77
82
|
licenses: []
|