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.
Binary file
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ *.swp
6
+ *.swo
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in frankenstein-sinatra.gemspec
4
+ gemspec
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,4 @@
1
+ #!/usr/bin/env ruby
2
+ require 'frankenstein-sinatra'
3
+
4
+ FrankensteinSinatra::Shell.send ARGV.first, ARGV.last
@@ -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
@@ -0,0 +1,3 @@
1
+ def partial page
2
+ haml "partials/_#{page}".to_sym
3
+ end
@@ -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,2 @@
1
+ enable :sessions
2
+ set :session_secret, (ENV['SESSION_KEY'] || 'NOSECRET')
@@ -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,3 @@
1
+ module FrankensteinSinatra
2
+ VERSION = "0.0.1"
3
+ 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: []