wired 0.0.3 → 0.0.4
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 +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: []
|