frankenstein-sinatra 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []