days 0.0.1.earlier → 0.1.0

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.
Files changed (76) hide show
  1. data/.gitignore +6 -0
  2. data/.rspec +2 -0
  3. data/.travis.yml +9 -0
  4. data/README.md +2 -0
  5. data/app/images/glyphicons-halflings-white.png +0 -0
  6. data/app/images/glyphicons-halflings.png +0 -0
  7. data/app/javascripts/bootstrap.js +2159 -0
  8. data/app/javascripts/bootstrap.min.js +6 -0
  9. data/app/javascripts/jquery-1.8.3.min.js +2 -0
  10. data/app/stylesheets/admin/login.scss +26 -0
  11. data/app/stylesheets/admin.scss +28 -0
  12. data/app/stylesheets/bootstrap-responsive.css +1092 -0
  13. data/app/stylesheets/bootstrap-responsive.min.css +9 -0
  14. data/app/stylesheets/bootstrap.css +6039 -0
  15. data/app/stylesheets/bootstrap.min.css +9 -0
  16. data/app/stylesheets/style.scss +132 -0
  17. data/app/views/admin/categories.haml +53 -0
  18. data/app/views/admin/entries/form.haml +55 -0
  19. data/app/views/admin/entries/index.haml +31 -0
  20. data/app/views/admin/index.haml +0 -0
  21. data/app/views/admin/login.haml +19 -0
  22. data/app/views/admin/setup.haml +22 -0
  23. data/app/views/admin/users/form.haml +25 -0
  24. data/app/views/admin/users/index.haml +23 -0
  25. data/app/views/admin.haml +37 -0
  26. data/app/views/entries.haml +4 -0
  27. data/app/views/entry.haml +32 -0
  28. data/app/views/layout.haml +32 -0
  29. data/bin/days +5 -0
  30. data/bootstrap.sh +41 -0
  31. data/days.gemspec +25 -2
  32. data/lib/days/app/admin/categories.rb +43 -0
  33. data/lib/days/app/admin/entries.rb +72 -0
  34. data/lib/days/app/admin/session.rb +28 -0
  35. data/lib/days/app/admin/setup.rb +20 -0
  36. data/lib/days/app/admin/users.rb +59 -0
  37. data/lib/days/app/admin.rb +11 -0
  38. data/lib/days/app/entries.rb +84 -0
  39. data/lib/days/app.rb +110 -0
  40. data/lib/days/command.rb +158 -0
  41. data/lib/days/config.rb +42 -0
  42. data/lib/days/helpers.rb +101 -0
  43. data/lib/days/migrate/20121221000000_create_entries.rb +18 -0
  44. data/lib/days/migrate/20121221001000_create_users.rb +12 -0
  45. data/lib/days/migrate/20121221002000_create_categories.rb +17 -0
  46. data/lib/days/migrator.rb +33 -0
  47. data/lib/days/models/category.rb +12 -0
  48. data/lib/days/models/entry.rb +63 -0
  49. data/lib/days/models/user.rb +14 -0
  50. data/lib/days/models.rb +7 -0
  51. data/lib/days/version.rb +1 -1
  52. data/lib/days.rb +3 -1
  53. data/scripts/lokka_export.rb +45 -0
  54. data/skeleton/days/Gemfile +11 -0
  55. data/skeleton/days/config.ru +6 -0
  56. data/skeleton/days/config.yml +33 -0
  57. data/skeleton/days/db/.gitkeep +0 -0
  58. data/spec/controllers/admin/categories_spec.rb +100 -0
  59. data/spec/controllers/admin/entries_spec.rb +185 -0
  60. data/spec/controllers/admin/session_spec.rb +112 -0
  61. data/spec/controllers/admin/setup_spec.rb +85 -0
  62. data/spec/controllers/admin/users_spec.rb +163 -0
  63. data/spec/controllers/entries_spec.rb +129 -0
  64. data/spec/environment/Gemfile +11 -0
  65. data/spec/environment/config.ru +6 -0
  66. data/spec/environment/config.yml +32 -0
  67. data/spec/environment/db/.gitkeep +0 -0
  68. data/spec/fixtures/categories.yml +5 -0
  69. data/spec/fixtures/entries.yml +25 -0
  70. data/spec/fixtures/users.yml +6 -0
  71. data/spec/helpers_spec.rb +117 -0
  72. data/spec/models/entry_spec.rb +238 -0
  73. data/spec/shared/admin.rb +8 -0
  74. data/spec/spec_helper.rb +134 -0
  75. data/tasks +9 -0
  76. metadata +353 -9
@@ -0,0 +1,37 @@
1
+ !!! 5
2
+ %html
3
+ %head
4
+ %meta{charset: 'UTF-8'}
5
+ %meta{name: "viewport", content: "width=device-width, initial-scale=1.0"}
6
+ %link{href: "/assets/bootstrap.min.css", rel: "stylesheet"}
7
+ %link{href: "/assets/admin.css", rel: "stylesheet", media: "screen"}
8
+ %link{href: "/assets/bootstrap-responsive.min.css", rel: "stylesheet"}
9
+ %script{src: '/assets/jquery-1.8.3.min.js'}
10
+ %script{src: '/assets/bootstrap.min.js'}
11
+ - if @title
12
+ %title #{@title} - Days Admin
13
+ - else
14
+ %title Days Admin
15
+ %body
16
+ .navbar.navbar-inverse.navbar-fixed-top
17
+ .navbar-inner
18
+ .container
19
+ %a.btn.btn-navbar{data: {toggle: 'collapse', target: '.nav-collapse'}}
20
+ %span.icon-bar
21
+ %span.icon-bar
22
+ %span.icon-bar
23
+ %a.brand{href: '/admin/'} Days
24
+ %form.navbar-form.pull-right{action: "/admin/logout", method: "POST"}
25
+ != csrf_tag
26
+ %button.btn.btn-link{type: 'submit'} Log out
27
+ %a.btn.btn-primary{href: '/admin/entries/new'} New Entry
28
+
29
+ %div.nav-collapse.collapse
30
+ %ul.nav
31
+ %li
32
+ %a{href: '/admin/entries'} Entries
33
+ %li
34
+ %a{href: '/admin/categories'} Categories
35
+ %li
36
+ %a{href: '/admin/users'} Users
37
+ != yield
@@ -0,0 +1,4 @@
1
+ - @entries.each do |entry|
2
+ != haml :entry, locals: {entry: entry}
3
+
4
+ != paginate @entries
@@ -0,0 +1,32 @@
1
+ - full ||= false
2
+ %article.entry
3
+ .left
4
+ %span.date= entry.published_at.strftime("%Y-%m-%d")
5
+ != haml :entry_left, locals: {entry: entry} rescue ''
6
+ .right
7
+ %header
8
+ %h1
9
+ %a{href: entry_path(entry)}= entry.title
10
+ .categories
11
+ - entry.categories.each do |category|
12
+ %span.category
13
+ %a{href: "/category/#{category.name}"}>= category.name
14
+
15
+ != haml :entry_header, locals: {entry: entry} rescue ''
16
+ %section
17
+ - if full
18
+ != entry.rendered.gsub(/<!-- *more *-->/,'<a name="more"></a>')
19
+ - else
20
+ != entry.short_rendered { "... <a href=\"#{entry_path(entry)}#more\">Continue Reading...</a>"}
21
+
22
+ %footer
23
+ Published at
24
+ %date #{entry.published_at}
25
+ |
26
+ %a{href: entry_path(entry)} Permalink
27
+ - if logged_in?
28
+ |
29
+ %a{href: "/admin/entries/#{entry.id}"} Edit
30
+
31
+ != haml :entry_footer, locals: {entry: entry} rescue ''
32
+ .clear
@@ -0,0 +1,32 @@
1
+ !!! 5
2
+ %html
3
+ %head
4
+ %meta{charset: 'UTF-8'}
5
+ %link{rel: 'stylesheet', type: 'text/css', href: '/assets/style.css'}
6
+ %link{rel: "alternate", type: "application/atom+xml", href: '/feed', title: 'Feed'}
7
+ != haml :head rescue ''
8
+ - if @title
9
+ %title #{@title} - #{config.title}
10
+ - else
11
+ %title= config.title
12
+ %body
13
+ .container
14
+ %header#header
15
+ %h1
16
+ %a{href: '/'}= config.title
17
+ != yield
18
+ %footer#footer
19
+ %section
20
+ %nav
21
+ %h3 Categories
22
+ %ul
23
+ - Days::Category.all.each do |category|
24
+ %li
25
+ %a{href: "/category/#{URI.encode_www_form_component(category.name)}"}= category.name
26
+ %section
27
+ %h3 Recent Entries
28
+ %ul
29
+ - Days::Entry.published.first(10).each do |entry|
30
+ %li
31
+ %a{href: entry_path(entry)}= entry.title
32
+
data/bin/days ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ # vim: ft=ruby
3
+ require 'days/command'
4
+
5
+ Days::Command.start
data/bootstrap.sh ADDED
@@ -0,0 +1,41 @@
1
+ #!/bin/sh
2
+
3
+ if [ "$1" = "" ]; then
4
+ to="sandbox"
5
+ else
6
+ to="$1"
7
+ fi
8
+
9
+ if [ -d "${to}" ]; then
10
+ echo "directory ./${to} already exists. quitting."
11
+ exit 1
12
+ fi
13
+
14
+ echo "==> bundle install"
15
+ bundle install || exit 1
16
+ echo "==> mkdir $to && cd $to"
17
+ mkdir $to || exit 1
18
+ cd $to || exit 1
19
+ echo "===> bundle exec ../bin/days init"
20
+ bundle exec ../bin/days init || exit 1
21
+ echo "===> Replacing gemfile"
22
+ cat > Gemfile <<-EOF
23
+ source "https://rubygems.org"
24
+
25
+ gem "days", path: File.expand_path(File.join(__FILE__, '..', '..'))
26
+
27
+ group :production do
28
+ # gem "mysql2"
29
+ end
30
+
31
+ group :development do
32
+ gem "pry"
33
+ gem "sqlite3"
34
+ end
35
+ EOF
36
+ echo "===> bundle install"
37
+ bundle install || exit 1
38
+ echo "===> bundle exec days migrate"
39
+ bundle exec days migrate || exit 1
40
+
41
+ echo "===== Days environment for development is set up at $(pwd)! ====="
data/days.gemspec CHANGED
@@ -17,8 +17,31 @@ Gem::Specification.new do |gem|
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
19
 
20
- gem.add_dependency "sinatra"
20
+ gem.add_dependency "sinatra", '~> 1.3.3'
21
+ gem.add_dependency "thor"
22
+ gem.add_dependency "rack_csrf"
23
+
24
+ gem.add_dependency "settingslogic"
25
+
21
26
  gem.add_dependency "sprockets"
22
27
  gem.add_dependency "haml"
23
- gem.add_dependency "scss"
28
+ gem.add_dependency "sass"
29
+
30
+ gem.add_dependency "redcarpet"
31
+ gem.add_dependency "builder"
32
+
33
+ gem.add_dependency "activerecord", "~> 3.2.9"
34
+ gem.add_dependency "kaminari", "> 0.13.0"
35
+ gem.add_dependency "padrino-helpers"
36
+ gem.add_dependency "stringex"
37
+ gem.add_dependency "bcrypt-ruby"
38
+
39
+ gem.add_development_dependency "sqlite3"
40
+
41
+ gem.add_development_dependency "rspec"
42
+ gem.add_development_dependency "rack-test"
43
+ gem.add_development_dependency "fuubar"
44
+
45
+ gem.add_dependency "pry"
46
+ gem.add_development_dependency "pry-nav"
24
47
  end
@@ -0,0 +1,43 @@
1
+ module Days
2
+ class App < Sinatra::Base
3
+ get "/admin/categories", :admin_only => true do
4
+ @categories = Category.all
5
+ haml :'admin/categories', layout: :admin
6
+ end
7
+
8
+ post "/admin/categories", :admin_only => true do
9
+ category = params[:category] || halt(400)
10
+ @category = Category.new(category)
11
+
12
+ if @category.save
13
+ redirect "/admin/categories"
14
+ else
15
+ status 406
16
+ @categories = Category.all
17
+ haml :'admin/categories', layout: :admin
18
+ end
19
+ end
20
+
21
+ put "/admin/categories/:id", :admin_only => true do
22
+ category = params[:category] || halt(400)
23
+ @category = Category.where(id: params[:id]).first || halt(404)
24
+
25
+ @category.update_attributes(category)
26
+
27
+ if @category.save
28
+ redirect "/admin/categories"
29
+ else
30
+ status 406
31
+ @categories = Category.all
32
+ haml :'admin/categories', layout: :admin
33
+ end
34
+ end
35
+
36
+ delete "/admin/categories/:id", :admin_only => true do
37
+ @category = Category.where(id: params[:id]).first || halt(404)
38
+ @category.destroy
39
+
40
+ redirect "/admin/categories"
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,72 @@
1
+ module Days
2
+ class App < Sinatra::Base
3
+ get "/admin/entries", :admin_only => true do
4
+ @entries = Entry.order('id DESC').all
5
+ haml :'admin/entries/index', layout: :admin
6
+ end
7
+
8
+ get "/admin/entries/new", :admin_only => true do
9
+ @entry = Entry.new
10
+ @categories = Category.all
11
+ haml :'admin/entries/form', layout: :admin
12
+ end
13
+
14
+ post "/admin/entries", :admin_only => true do
15
+ entry = params[:entry]
16
+ if entry
17
+ if entry[:categories].is_a?(Hash)
18
+ entry[:categories] = Category.where(
19
+ id: entry[:categories].keys.map(&:to_i)
20
+ )
21
+ end
22
+
23
+ @entry = Entry.new(entry)
24
+ @entry.user = current_user
25
+
26
+ if @entry.save
27
+ redirect "/admin/entries/#{@entry.id}" # FIXME: Permalink
28
+ else
29
+ status 406
30
+ @categories = Category.all
31
+ haml :'admin/entries/form', layout: :admin
32
+ end
33
+ else
34
+ halt 400
35
+ end
36
+ end
37
+
38
+ get "/admin/entries/:id", :admin_only => true do
39
+ @entry = Entry.where(id: params[:id]).first || halt(404)
40
+ @categories = Category.all
41
+ haml :'admin/entries/form', layout: :admin
42
+ end
43
+
44
+ put "/admin/entries/:id", :admin_only => true do
45
+ entry = params[:entry] || halt(400)
46
+ @entry = Entry.where(id: params[:id]).first || halt(404)
47
+
48
+ entry[:categories] = Category.where(
49
+ id: (entry[:categories] || {}).keys.map(&:to_i)
50
+ )
51
+ @entry.update_attributes(entry)
52
+
53
+ if @entry.save
54
+ redirect "/admin/entries/#{@entry.id}"
55
+ else
56
+ status 406
57
+ @categories = Category.all
58
+ haml :'admin/entries/form', layout: :admin
59
+ end
60
+ end
61
+
62
+ delete "/admin/entries/:id", :admin_only => true do
63
+ @entry = Entry.where(id: params[:id]).first || halt(404)
64
+ @entry.destroy
65
+
66
+ redirect "/admin/entries"
67
+ end
68
+
69
+ post "/admin/entries/preview", :admin_only => true do
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,28 @@
1
+ module Days
2
+ class App < Sinatra::Base
3
+ get "/admin/login" do
4
+ haml :'admin/login'
5
+ end
6
+
7
+ post "/admin/login" do
8
+ unless params[:login_name] && params[:password]
9
+ halt 400
10
+ end
11
+
12
+ user = User.where(login_name: params[:login_name]).first
13
+
14
+ if user && user.authenticate(params[:password])
15
+ session[:user_id] = user.id
16
+ redirect '/admin'
17
+ else
18
+ status 401
19
+ haml :'admin/login'
20
+ end
21
+ end
22
+
23
+ post "/admin/logout" do
24
+ session[:user_id] = nil
25
+ redirect '/admin/login'
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,20 @@
1
+ module Days
2
+ class App < Sinatra::Base
3
+ get "/admin/setup", :setup_only => true do
4
+ @user = User.new
5
+ haml :'admin/setup'
6
+ end
7
+
8
+ post "/admin/setup", :setup_only => true do
9
+ user = params[:user] || halt(400)
10
+ @user = User.new(user)
11
+ if @user.save
12
+ session[:user_id] = @user.id
13
+ redirect '/admin'
14
+ else
15
+ status 406
16
+ haml :'admin/setup'
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,59 @@
1
+ module Days
2
+ class App < Sinatra::Base
3
+ get "/admin/users", :admin_only => true do
4
+ @users = User.all
5
+ haml :'admin/users/index', layout: :admin
6
+ end
7
+
8
+ get "/admin/users/new", :admin_only => true do
9
+ @user = User.new
10
+ haml :'admin/users/form', layout: :admin
11
+ end
12
+
13
+ post "/admin/users", :admin_only => true do
14
+ user = params[:user] || halt(400)
15
+ @user = User.new(user)
16
+
17
+ if @user.save
18
+ redirect "/admin/users/#{@user.id}" # FIXME: Permalink
19
+ else
20
+ status 406
21
+ haml :'admin/users/form', layout: :admin
22
+ end
23
+ end
24
+
25
+ get "/admin/users/:id", :admin_only => true do
26
+ @user = User.where(id: params[:id]).first || halt(404)
27
+ haml :'admin/users/form', layout: :admin
28
+ end
29
+
30
+ put "/admin/users/:id", :admin_only => true do
31
+ user = params[:user] || halt(400)
32
+ @user = User.where(id: params[:id]).first || halt(404)
33
+
34
+ if user[:password] == ""
35
+ user.delete :password
36
+ end
37
+
38
+ @user.update_attributes(user)
39
+
40
+ if @user.save
41
+ redirect "/admin/users/#{@user.id}"
42
+ else
43
+ status 406
44
+ haml :'admin/users/form', layout: :admin
45
+ end
46
+ end
47
+
48
+ delete "/admin/users/:id", :admin_only => true do
49
+ @user = User.where(id: params[:id]).first || halt(404)
50
+
51
+ if @user == current_user
52
+ halt 400
53
+ else
54
+ @user.destroy
55
+ redirect "/admin/users"
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,11 @@
1
+ module Days
2
+ class App < Sinatra::Base
3
+ get "/admin" do
4
+ redirect "/admin/"
5
+ end
6
+
7
+ get "/admin/", admin_only: true do
8
+ haml :'admin/index', layout: :admin
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,84 @@
1
+ require 'builder'
2
+ require 'active_support/core_ext/time/calculations'
3
+
4
+ module Days
5
+ class App < Sinatra::Base
6
+ not_found do
7
+ entry = lookup_entry(request.path)
8
+
9
+ if entry
10
+ status 200
11
+
12
+ case entry
13
+ when Array
14
+ @title = entry.map(&:title).join(', ')
15
+ @entries = entry
16
+ haml :entries
17
+ when Entry
18
+ @title = entry.title
19
+ haml :entry, locals: {entry: entry, full: true}
20
+ end
21
+ else
22
+ ''
23
+ end
24
+ end
25
+
26
+ get '/' do
27
+ @entries = Entry.published.page(params[:page] || 1)
28
+ haml :entries
29
+ end
30
+
31
+ get '/category/:name' do
32
+ category = Category.where(name: params[:name]).first || halt(404)
33
+ @entries = category.entries.published.page(params[:page] || 1)
34
+ haml :entries
35
+ end
36
+
37
+ get '/:year/:month' do
38
+ halt 404 if /[^0-9]/ =~ params[:year] || /[^0-9]/ =~ params[:month]
39
+ begin
40
+ base = Time.local(params[:year].to_i, params[:month].to_i, 1, 0, 0, 0)
41
+ rescue ArgumentError
42
+ halt 404
43
+ end
44
+
45
+ range = (base.beginning_of_month .. base.end_of_month)
46
+ @entries = Entry.where(published_at: range).published.page(params[:page] || 1)
47
+ haml :entries
48
+ end
49
+
50
+ get '/feed' do
51
+ content_type 'application/atom+xml'
52
+ entries = Entry.published.first(50)
53
+
54
+ xml = Builder::XmlMarkup.new
55
+
56
+ xml.instruct!
57
+
58
+ xml.feed("xmlns" => 'http://www.w3.org/2005/Atom') do
59
+ xml.id("tag:#{request.host},2005:#{request.fullpath.split(".")[0]}")
60
+
61
+ xml.link(:rel => 'alternate', :type => 'text/html', :href => request.url.gsub(/feed$/,''))
62
+ xml.link(:rel => 'self', :type => 'application/atom+xml', :href => request.url)
63
+ xml.title config.title
64
+
65
+ xml.updated(entries.map(&:updated_at).max)
66
+
67
+ entries.each do |entry|
68
+ xml.entry do
69
+ xml.id "tag:#{request.host},2005:Entry/#{entry.id}"
70
+
71
+ xml.published entry.published_at.xmlschema
72
+ xml.updated entry.updated_at.xmlschema
73
+
74
+ xml.link(rel: 'alternate', type: 'text/html', href: "#{request.url.gsub(/\/feed$/,'')}#{entry_path(entry)}")
75
+
76
+ xml.title entry.title
77
+
78
+ xml.content(entry.short_rendered { '... <a href="'+entry_path(entry)+'">Continue Reading</a>' }, type: 'html')
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
data/lib/days/app.rb ADDED
@@ -0,0 +1,110 @@
1
+ require 'sinatra/base'
2
+ require 'kaminari/sinatra'
3
+ require 'sprockets'
4
+ require 'rack/csrf'
5
+ require_relative 'config'
6
+ require_relative 'models'
7
+ require_relative 'helpers'
8
+ require 'haml'
9
+ require 'sass'
10
+
11
+ I18n.load_path.reject! {|_| _.match(/padrino/) }
12
+
13
+ module Days
14
+ class App < Sinatra::Base
15
+ set :root, File.expand_path(File.join(__FILE__, '..', '..', '..', 'app'))
16
+
17
+ set(:sprockets, Sprockets::Environment.new.tap { |env|
18
+ env.append_path "#{self.root}/javascripts"
19
+ env.append_path "#{self.root}/stylesheets"
20
+ env.append_path "#{self.root}/images"
21
+ })
22
+
23
+
24
+ def self.rack
25
+ Rack::Builder.app {
26
+ app = ::Days::App
27
+ use ActiveRecord::ConnectionAdapters::ConnectionManagement
28
+
29
+ map '/' do
30
+ if app.environment != 'test'
31
+ use Rack::Session::Cookie
32
+ use Rack::Csrf
33
+ end
34
+ if app.environment == 'development'
35
+ app.dump_errors = true
36
+ app.show_exceptions = true
37
+ app.reload_templates = true
38
+ end
39
+ run app
40
+ end
41
+
42
+ map '/assets' do
43
+ run app.sprockets
44
+ end
45
+ }
46
+ end
47
+
48
+ set(:config, nil)
49
+ set :method_override, true
50
+
51
+ set :haml, :escape_html => true
52
+
53
+ helpers Helpers
54
+ helpers Kaminari::Helpers::SinatraHelpers
55
+
56
+ set :admin_only do |_|
57
+ condition do
58
+ unless logged_in?
59
+ # TODO: return-path param
60
+ redirect '/admin/login'
61
+ end
62
+ end
63
+ end
64
+
65
+ set :setup_only do |_|
66
+ condition do
67
+ if User.first
68
+ halt 403
69
+ end
70
+ end
71
+ end
72
+
73
+ alias find_template_orig find_template
74
+ def find_template(views, name, engine, &block)
75
+ app_views = File.expand_path(settings.config['views'] || ::File.join(settings.config.root, "views"))
76
+ find_template_orig app_views, name, engine, &block
77
+ find_template_orig views, name, engine, &block
78
+ end
79
+
80
+ class << self
81
+ alias environment_orig= environment=
82
+ def environment=(x)
83
+ self.environment_orig = x
84
+ Config.namespace x.to_s
85
+ x
86
+ end
87
+
88
+ alias config_orig= config=
89
+ def config=(x)
90
+ self.config_orig = x
91
+ self.set :session_secret, config['session_secret'] || 'jjiw-jewn-n2i9-nc1e_binding.pry-is-good'
92
+ self.set(:sprockets, Sprockets::Environment.new.tap { |env|
93
+ env.append_path "#{config.root}/javascripts"
94
+ env.append_path "#{config.root}/stylesheets"
95
+ env.append_path "#{config.root}/images"
96
+ env.append_path "#{self.root}/javascripts"
97
+ env.append_path "#{self.root}/stylesheets"
98
+ env.append_path "#{self.root}/images"
99
+ })
100
+ config.establish_db_connection()
101
+ x
102
+ end
103
+ end
104
+ end
105
+ end
106
+
107
+ Dir["#{File.dirname(__FILE__)}/app/**/*.rb"].each do |f|
108
+ require f
109
+ end
110
+