-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsnippets.rb
More file actions
71 lines (60 loc) · 2.2 KB
/
Copy pathsnippets.rb
File metadata and controls
71 lines (60 loc) · 2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# © José Bonnet
# encoding: utf-8
ENV['RACK_ENV'] ||= 'production'
require 'sinatra/base'
require 'sinatra/activerecord'
require 'sinatra/logger'
#require 'sinatra/sessions'
# Require the bundler gem and then call Bundler.require to load in all gems listed in Gemfile.
require 'bundler'
Bundler.require :default, ENV['RACK_ENV'].to_sym
['app/commands', 'app/models', 'app/views'].each do |dir|
Dir[File.join(File.dirname(__FILE__), dir, '**', '*.rb')].each do |file|
require file
end
end
class SnippetApp < Sinatra::Base
register Sinatra::CrossOrigin
register Sinatra::ActiveRecordExtension
register Sinatra::Logger
set :root, File.dirname(__FILE__)
set :public_folder, File.join(File.dirname(__FILE__), 'public')
set :views, Proc.new { File.join(root, "app/views") }
set :bind, '0.0.0.0'
set :time_at_startup, Time.now.utc
set :environments, %w(development test production)
set :environment, ENV['RACK_ENV'] || :development
# Sessions
enable :sessions
# Logging
enable :logging
set :logger_level, :debug # or :fatal, :error, :warn, :info
FileUtils.mkdir(File.join(settings.root, 'log')) unless File.exists? File.join(settings.root, 'log')
logfile = File.open(File.join('log', ENV['RACK_ENV'])+'.log', 'a+')
logfile.sync = true
logger = Logger.new(logfile)
enable :cross_origin
logger.info("SnippetApp") {"started at #{settings.time_at_startup}"}
get '/' do
logger.info(log_message) {'entered'}
logger.info(log_message) {"session=#{session.inspect}"}
@snippets = FetchManySnippetsCommand.new(logger: logger).execute
erb :index
end
post '/snippets' do
logger.info(log_message) {'entered'}
@snippet = CreateSnippetCommand.new(title: params[:title], body: params[:body], logger: logger).execute
if @snippet
session[:message] = "Snippet titled \"#{params[:title]}\" saved!"
logger.info(log_message) {"session=#{session.inspect}"}
else
session[:message] = "Snippet titled \"#{params[:title]}\" NOT saved!"
logger.info(log_message) {"session=#{session.inspect}"}
end
redirect '/'
end
private
def log_message
"#{self.class.name} #{request.env["REQUEST_METHOD"]} #{request.env["REQUEST_PATH"]}"
end
end