frankenstein-sinatra 0.0.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/.frankenstein-sinatra.gemspec.swp +0 -0
- data/.gitignore +6 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/bin/.sinatra.swp +0 -0
- data/bin/sinatra +4 -0
- data/frankenstein-sinatra.gemspec +36 -0
- data/lib/frankenstein-sinatra/.shell.rb.swp +0 -0
- data/lib/frankenstein-sinatra/.template.rb.swp +0 -0
- data/lib/frankenstein-sinatra/helpers.rb +3 -0
- data/lib/frankenstein-sinatra/locales.rb +1 -0
- data/lib/frankenstein-sinatra/mail.rb +20 -0
- data/lib/frankenstein-sinatra/routes.rb +9 -0
- data/lib/frankenstein-sinatra/session.rb +2 -0
- data/lib/frankenstein-sinatra/shell.rb +61 -0
- data/lib/frankenstein-sinatra/template.rb +144 -0
- data/lib/frankenstein-sinatra/version.rb +3 -0
- data/lib/frankenstein-sinatra.rb +23 -0
- metadata +186 -0
Binary file
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/.sinatra.swp
ADDED
Binary file
|
data/bin/sinatra
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "frankenstein-sinatra/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
|
7
|
+
s.name = "frankenstein-sinatra"
|
8
|
+
s.version = FrankensteinSinatra::VERSION
|
9
|
+
s.authors = ["Christian Mortaro"]
|
10
|
+
s.email = ["mortaro@towsta.com"]
|
11
|
+
s.homepage = ""
|
12
|
+
s.summary = "Sinatra is a new kind of monster!"
|
13
|
+
s.description = "Aditional flesh for frank sinatra's body"
|
14
|
+
|
15
|
+
s.rubyforge_project = "frankenstein-sinatra"
|
16
|
+
|
17
|
+
s.add_dependency "json"
|
18
|
+
s.add_dependency "compass"
|
19
|
+
s.add_dependency "haml"
|
20
|
+
s.add_dependency "sinatra"
|
21
|
+
s.add_dependency "i18n-router"
|
22
|
+
s.add_dependency "pony"
|
23
|
+
s.add_dependency "coffee-script"
|
24
|
+
s.add_dependency "active_support"
|
25
|
+
|
26
|
+
s.add_development_dependency 'rspec'
|
27
|
+
s.add_development_dependency 'shotgun'
|
28
|
+
s.add_development_dependency 'heroku'
|
29
|
+
|
30
|
+
|
31
|
+
s.files = `git ls-files`.split("\n")
|
32
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
33
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
34
|
+
s.require_paths = ["lib"]
|
35
|
+
|
36
|
+
end
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
set :translations, 'locales'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Pony.options = {
|
2
|
+
:via => :smtp,
|
3
|
+
:via_options => {
|
4
|
+
:address => 'smtp.sendgrid.net',
|
5
|
+
:port => '587',
|
6
|
+
:domain => 'heroku.com',
|
7
|
+
:user_name => ENV['SENDGRID_USERNAME'],
|
8
|
+
:password => ENV['SENDGRID_PASSWORD'],
|
9
|
+
:authentication => :plain,
|
10
|
+
:enable_starttls_auto => true
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
class Hash
|
15
|
+
def to_mail
|
16
|
+
mail_string = ""
|
17
|
+
self.each {|key, val| mail_string << "<b>#{key}:</b> #{val}<br/>"}
|
18
|
+
mail_string
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
get '/stylesheets/:name.css' do
|
2
|
+
content_type 'text/css', :charset => 'utf-8'
|
3
|
+
sass(:"stylesheets/#{params[:name]}", Compass.sass_engine_options)
|
4
|
+
end
|
5
|
+
|
6
|
+
get '/js/:name.js' do
|
7
|
+
content_type 'text/javascript', :charset => 'utf-8'
|
8
|
+
coffee :"javascripts/#{params[:name]}"
|
9
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module FrankensteinSinatra
|
2
|
+
class Shell
|
3
|
+
def self.git_path *args
|
4
|
+
repo = args.first || project
|
5
|
+
"git@heroku.com:#{repo}.git"
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.project *args
|
9
|
+
Dir.pwd.split('/').last.strip
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.new *args
|
13
|
+
FrankensteinSinatra::TemplateGenerator.new args.first
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.clone *args
|
17
|
+
system "git clone #{git_path args.first}"
|
18
|
+
system "cd #{args.first} && git remote add heroku #{git_path}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.deploy *args
|
22
|
+
setup unless set_up?
|
23
|
+
system 'git add .'
|
24
|
+
message = args.first || 'Deployed via Sinatra'
|
25
|
+
system "git commit -a -m '#{message}'"
|
26
|
+
system 'git push heroku master -q'
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.console *args
|
30
|
+
system 'irb -r ./app.rb'
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.server *args
|
34
|
+
port = args.first || '6937'
|
35
|
+
system "shotgun -I config.ru -p #{port}"
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.setup *args
|
39
|
+
system "git init"
|
40
|
+
system "heroku create" unless system "heroku create #{project}"
|
41
|
+
system "heroku addons:add sendgrid:starter"
|
42
|
+
system "heroku addons:add memcache"
|
43
|
+
system "heroku addons:add custom_domains:basic"
|
44
|
+
system "heroku addons:add zerigo_dns:basic"
|
45
|
+
fingerprints = "\n#set up via Sinatra"
|
46
|
+
File.open("config.ru", 'a+') {|f| f.write(fingerprints)}
|
47
|
+
system "bundle install"
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.set_up? *args
|
51
|
+
IO.readlines("./config.ru")[-1].index "#set"
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.help *args
|
55
|
+
puts 'sinatra new {projectname} -----------> to generate a new project'
|
56
|
+
puts 'sinatra server {optional: port} -----> to run the application server'
|
57
|
+
puts 'sinatra console ---------------------> to run the application console'
|
58
|
+
puts 'sinatra deploy {optional: message} --> to deploy your application'
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,144 @@
|
|
1
|
+
module FrankensteinSinatra
|
2
|
+
class TemplateGenerator
|
3
|
+
|
4
|
+
def initialize project
|
5
|
+
@project = project
|
6
|
+
Dir.mkdir dir rescue nil
|
7
|
+
Dir.mkdir dir('views') rescue nil
|
8
|
+
Dir.mkdir dir('views/partials') rescue nil
|
9
|
+
Dir.mkdir dir('views/javascripts') rescue nil
|
10
|
+
Dir.mkdir dir('views/stylesheets') rescue nil
|
11
|
+
Dir.mkdir dir('public') rescue nil
|
12
|
+
Dir.mkdir dir('public/js') rescue nil
|
13
|
+
Dir.mkdir dir('public/stylesheets') rescue nil
|
14
|
+
Dir.mkdir dir('public/images') rescue nil
|
15
|
+
Dir.mkdir dir('models') rescue nil
|
16
|
+
Dir.mkdir dir('controllers') rescue nil
|
17
|
+
Dir.mkdir dir('locales') rescue nil
|
18
|
+
Dir.mkdir dir('configs') rescue nil
|
19
|
+
app_rb
|
20
|
+
config_ru
|
21
|
+
gemfile
|
22
|
+
layout
|
23
|
+
index
|
24
|
+
app_sass
|
25
|
+
app_coffee
|
26
|
+
partial_head
|
27
|
+
helpers_rb
|
28
|
+
jquery
|
29
|
+
gitignore
|
30
|
+
end
|
31
|
+
|
32
|
+
def app_rb
|
33
|
+
code = "#coding: utf-8 \n"
|
34
|
+
code += "require 'sinatra'\n"
|
35
|
+
code += "require 'frankenstein-sinatra'\n\n"
|
36
|
+
code += "get '/' do\n"
|
37
|
+
code += " haml :index\n"
|
38
|
+
code += "end"
|
39
|
+
write dir('app.rb'), code
|
40
|
+
end
|
41
|
+
|
42
|
+
def config_ru
|
43
|
+
code = "require ./app\n"
|
44
|
+
code += "run Sinatra::Application"
|
45
|
+
write dir('confir.ru'), code
|
46
|
+
end
|
47
|
+
|
48
|
+
def helpers_rb
|
49
|
+
code = "helpers do\n"
|
50
|
+
code += "end"
|
51
|
+
write dir('helpers.rb'), code
|
52
|
+
end
|
53
|
+
|
54
|
+
def gemfile
|
55
|
+
code = "source :rubygems \n"
|
56
|
+
code += "gem 'frankenstein-sinatra'\n"
|
57
|
+
code += "group :production do\n"
|
58
|
+
code += " gem 'therubyracer'\n"
|
59
|
+
code += "end"
|
60
|
+
write dir('Gemfile'), code
|
61
|
+
end
|
62
|
+
|
63
|
+
def layout
|
64
|
+
code = "!!!\n"
|
65
|
+
code += "%html\n"
|
66
|
+
code += " %head\n"
|
67
|
+
code += " = partial :head\n"
|
68
|
+
code += " %body\n"
|
69
|
+
code += " #top\n"
|
70
|
+
code += " .wrapper\n"
|
71
|
+
code += " #middle\n"
|
72
|
+
code += " .wrapper\n"
|
73
|
+
code += " = yield\n"
|
74
|
+
code += " #bottom\n"
|
75
|
+
code += " .wrapper\n"
|
76
|
+
write dir('views/layout.haml'), code
|
77
|
+
end
|
78
|
+
|
79
|
+
def index
|
80
|
+
songs = [
|
81
|
+
"Saturday Night",
|
82
|
+
"I've Got a Crush on You",
|
83
|
+
"Oh, What it Seemed to Be",
|
84
|
+
"Nancy (With the Laughing Face)",
|
85
|
+
"The Coffee Song",
|
86
|
+
"The House I Live in",
|
87
|
+
"Someone to Watch Over Me",
|
88
|
+
"Five Minutes More"
|
89
|
+
]
|
90
|
+
code = "%h1 Frankstein sinatra is singing \"#{songs.sample}\""
|
91
|
+
write dir('views/index.haml'), code
|
92
|
+
end
|
93
|
+
|
94
|
+
def app_sass
|
95
|
+
code = "@import compass/reset\n"
|
96
|
+
code += "@import compass/css3\n\n"
|
97
|
+
code += "$wrapper: 940px\n\n"
|
98
|
+
code += ".wrapper\n"
|
99
|
+
code += " :width $wrapper\n"
|
100
|
+
code += " :margin 0 auto\n"
|
101
|
+
code += "#top, #middle, #bottom\n"
|
102
|
+
code += " :float left\n"
|
103
|
+
code += " :width 100%"
|
104
|
+
write dir('views/stylesheets/app.sass'), code
|
105
|
+
end
|
106
|
+
|
107
|
+
def app_coffee
|
108
|
+
code = "$ ->"
|
109
|
+
write dir('views/javascripts/app.coffee'), code
|
110
|
+
end
|
111
|
+
|
112
|
+
def partial_head
|
113
|
+
code = "%title #{@project}\n"
|
114
|
+
code += "%meta{:'http-equiv' => 'Content-Type', :content => 'text/html', :charset => 'utf-8'}\n"
|
115
|
+
code += "%link{rel: 'stylesheet', type: 'text/css', href: '/stylesheets/app.css'}\n"
|
116
|
+
code += "%link{rel: 'shortcut icon', type: 'image/x-icon', href: '/images/favicon.png'}\n"
|
117
|
+
code += "%script{src: '/js/jquery.js'}\n"
|
118
|
+
code += "%script{src: '/js/app.js'}"
|
119
|
+
write dir('views/partials/_head.haml'), code
|
120
|
+
end
|
121
|
+
|
122
|
+
def jquery
|
123
|
+
Net::HTTP.start("code.jquery.com"){|http| @code = http.get('/jquery.min.js').body} rescue nil
|
124
|
+
write dir('public/js/jquery.js'), @code
|
125
|
+
end
|
126
|
+
|
127
|
+
def gitignore
|
128
|
+
code = "*.swp\n"
|
129
|
+
code += "*.swo\n"
|
130
|
+
code += ".bundle/\n"
|
131
|
+
code += ".sass-cache/"
|
132
|
+
write dir('.gitignore'), code
|
133
|
+
end
|
134
|
+
|
135
|
+
def write file, content
|
136
|
+
File.open("#{file}", 'w') {|f| f.write(content) }
|
137
|
+
end
|
138
|
+
|
139
|
+
def dir file=''
|
140
|
+
"#{@project}/#{file}"
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
144
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#coding: utf-8
|
2
|
+
require 'sinatra'
|
3
|
+
require 'digest/md5'
|
4
|
+
require 'net/http'
|
5
|
+
require 'cgi'
|
6
|
+
require 'json'
|
7
|
+
require 'time'
|
8
|
+
require 'date'
|
9
|
+
require 'time'
|
10
|
+
require 'compass'
|
11
|
+
require 'i18n-router'
|
12
|
+
require 'pony'
|
13
|
+
require 'active_support/all'
|
14
|
+
|
15
|
+
require "frankenstein-sinatra/mail"
|
16
|
+
require "frankenstein-sinatra/routes"
|
17
|
+
require "frankenstein-sinatra/session"
|
18
|
+
require "frankenstein-sinatra/template"
|
19
|
+
require "frankenstein-sinatra/shell"
|
20
|
+
require "frankenstein-sinatra/locales"
|
21
|
+
require "frankenstein-sinatra/helpers"
|
22
|
+
|
23
|
+
(Dir["./configs/*.rb"] + Dir["./controllers/*.rb"] + Dir["./models/*.rb"]).each {|file| load file}
|
metadata
ADDED
@@ -0,0 +1,186 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: frankenstein-sinatra
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Christian Mortaro
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: json
|
16
|
+
requirement: &3940164 !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: *3940164
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: compass
|
27
|
+
requirement: &3939660 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *3939660
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: haml
|
38
|
+
requirement: &25629924 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *25629924
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: sinatra
|
49
|
+
requirement: &25629444 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *25629444
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: i18n-router
|
60
|
+
requirement: &25628712 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *25628712
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pony
|
71
|
+
requirement: &25628040 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *25628040
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: coffee-script
|
82
|
+
requirement: &25627056 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :runtime
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *25627056
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: active_support
|
93
|
+
requirement: &25626528 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :runtime
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *25626528
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: rspec
|
104
|
+
requirement: &25626000 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *25626000
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: shotgun
|
115
|
+
requirement: &25625124 !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
type: :development
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: *25625124
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: heroku
|
126
|
+
requirement: &25624104 !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: *25624104
|
135
|
+
description: Aditional flesh for frank sinatra's body
|
136
|
+
email:
|
137
|
+
- mortaro@towsta.com
|
138
|
+
executables:
|
139
|
+
- .sinatra.swp
|
140
|
+
- sinatra
|
141
|
+
extensions: []
|
142
|
+
extra_rdoc_files: []
|
143
|
+
files:
|
144
|
+
- .frankenstein-sinatra.gemspec.swp
|
145
|
+
- .gitignore
|
146
|
+
- Gemfile
|
147
|
+
- Rakefile
|
148
|
+
- bin/.sinatra.swp
|
149
|
+
- bin/sinatra
|
150
|
+
- frankenstein-sinatra.gemspec
|
151
|
+
- lib/frankenstein-sinatra.rb
|
152
|
+
- lib/frankenstein-sinatra/.shell.rb.swp
|
153
|
+
- lib/frankenstein-sinatra/.template.rb.swp
|
154
|
+
- lib/frankenstein-sinatra/helpers.rb
|
155
|
+
- lib/frankenstein-sinatra/locales.rb
|
156
|
+
- lib/frankenstein-sinatra/mail.rb
|
157
|
+
- lib/frankenstein-sinatra/routes.rb
|
158
|
+
- lib/frankenstein-sinatra/session.rb
|
159
|
+
- lib/frankenstein-sinatra/shell.rb
|
160
|
+
- lib/frankenstein-sinatra/template.rb
|
161
|
+
- lib/frankenstein-sinatra/version.rb
|
162
|
+
homepage: ''
|
163
|
+
licenses: []
|
164
|
+
post_install_message:
|
165
|
+
rdoc_options: []
|
166
|
+
require_paths:
|
167
|
+
- lib
|
168
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
175
|
+
none: false
|
176
|
+
requirements:
|
177
|
+
- - ! '>='
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0'
|
180
|
+
requirements: []
|
181
|
+
rubyforge_project: frankenstein-sinatra
|
182
|
+
rubygems_version: 1.8.16
|
183
|
+
signing_key:
|
184
|
+
specification_version: 3
|
185
|
+
summary: Sinatra is a new kind of monster!
|
186
|
+
test_files: []
|