nil, "body"=>nil, "id"=>"1"}>
114 | >> f.
115 | Display all 152 possibilities? (y or n)
116 |
117 | Finally, when you're ready to resume execution, you can enter "cont".
118 |
119 |
120 | == Console
121 |
122 | The console is a Ruby shell, which allows you to interact with your
123 | application's domain model. Here you'll have all parts of the application
124 | configured, just like it is when the application is running. You can inspect
125 | domain models, change values, and save to the database. Starting the script
126 | without arguments will launch it in the development environment.
127 |
128 | To start the console, run rails console from the application
129 | directory.
130 |
131 | Options:
132 |
133 | * Passing the -s, --sandbox argument will rollback any modifications
134 | made to the database.
135 | * Passing an environment name as an argument will load the corresponding
136 | environment. Example: rails console production.
137 |
138 | To reload your controllers and models after launching the console run
139 | reload!
140 |
141 | More information about irb can be found at:
142 | link:http://www.rubycentral.org/pickaxe/irb.html
143 |
144 |
145 | == dbconsole
146 |
147 | You can go to the command line of your database directly through rails
148 | dbconsole. You would be connected to the database with the credentials
149 | defined in database.yml. Starting the script without arguments will connect you
150 | to the development database. Passing an argument will connect you to a different
151 | database, like rails dbconsole production. Currently works for MySQL,
152 | PostgreSQL and SQLite 3.
153 |
154 | == Description of Contents
155 |
156 | The default directory structure of a generated Ruby on Rails application:
157 |
158 | |-- app
159 | | |-- assets
160 | | |-- images
161 | | |-- javascripts
162 | | `-- stylesheets
163 | | |-- controllers
164 | | |-- helpers
165 | | |-- mailers
166 | | |-- models
167 | | `-- views
168 | | `-- layouts
169 | |-- config
170 | | |-- environments
171 | | |-- initializers
172 | | `-- locales
173 | |-- db
174 | |-- doc
175 | |-- lib
176 | | `-- tasks
177 | |-- log
178 | |-- public
179 | |-- script
180 | |-- test
181 | | |-- fixtures
182 | | |-- functional
183 | | |-- integration
184 | | |-- performance
185 | | `-- unit
186 | |-- tmp
187 | | |-- cache
188 | | |-- pids
189 | | |-- sessions
190 | | `-- sockets
191 | `-- vendor
192 | |-- assets
193 | `-- stylesheets
194 | `-- plugins
195 |
196 | app
197 | Holds all the code that's specific to this particular application.
198 |
199 | app/assets
200 | Contains subdirectories for images, stylesheets, and JavaScript files.
201 |
202 | app/controllers
203 | Holds controllers that should be named like weblogs_controller.rb for
204 | automated URL mapping. All controllers should descend from
205 | ApplicationController which itself descends from ActionController::Base.
206 |
207 | app/models
208 | Holds models that should be named like post.rb. Models descend from
209 | ActiveRecord::Base by default.
210 |
211 | app/views
212 | Holds the template files for the view that should be named like
213 | weblogs/index.html.erb for the WeblogsController#index action. All views use
214 | eRuby syntax by default.
215 |
216 | app/views/layouts
217 | Holds the template files for layouts to be used with views. This models the
218 | common header/footer method of wrapping views. In your views, define a layout
219 | using the layout :default and create a file named default.html.erb.
220 | Inside default.html.erb, call <% yield %> to render the view using this
221 | layout.
222 |
223 | app/helpers
224 | Holds view helpers that should be named like weblogs_helper.rb. These are
225 | generated for you automatically when using generators for controllers.
226 | Helpers can be used to wrap functionality for your views into methods.
227 |
228 | config
229 | Configuration files for the Rails environment, the routing map, the database,
230 | and other dependencies.
231 |
232 | db
233 | Contains the database schema in schema.rb. db/migrate contains all the
234 | sequence of Migrations for your schema.
235 |
236 | doc
237 | This directory is where your application documentation will be stored when
238 | generated using rake doc:app
239 |
240 | lib
241 | Application specific libraries. Basically, any kind of custom code that
242 | doesn't belong under controllers, models, or helpers. This directory is in
243 | the load path.
244 |
245 | public
246 | The directory available for the web server. Also contains the dispatchers and the
247 | default HTML files. This should be set as the DOCUMENT_ROOT of your web
248 | server.
249 |
250 | script
251 | Helper scripts for automation and generation.
252 |
253 | test
254 | Unit and functional tests along with fixtures. When using the rails generate
255 | command, template test files will be generated for you and placed in this
256 | directory.
257 |
258 | vendor
259 | External libraries that the application depends on. Also includes the plugins
260 | subdirectory. If the app has frozen rails, those gems also go here, under
261 | vendor/rails/. This directory is in the load path.
262 |
--------------------------------------------------------------------------------
/scanbooth_web/Rakefile:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env rake
2 | # Add your own tasks in files placed in lib/tasks ending in .rake,
3 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
4 |
5 | require File.expand_path('../config/application', __FILE__)
6 |
7 | ScanBooth::Application.load_tasks
8 |
--------------------------------------------------------------------------------
/scanbooth_web/app/assets/images/rails.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/app/assets/images/rails.png
--------------------------------------------------------------------------------
/scanbooth_web/app/assets/javascripts/admin.js.coffee:
--------------------------------------------------------------------------------
1 | # Place all the behaviors and hooks related to the matching controller here.
2 | # All this logic will automatically be available in application.js.
3 | # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
4 |
--------------------------------------------------------------------------------
/scanbooth_web/app/assets/javascripts/application.js:
--------------------------------------------------------------------------------
1 | // This is a manifest file that'll be compiled into application.js, which will include all the files
2 | // listed below.
3 | //
4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5 | // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6 | //
7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8 | // the compiled file.
9 | //
10 | // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11 | // GO AFTER THE REQUIRES BELOW.
12 | //
13 | //= require jquery
14 | //= require jquery_ujs
15 | //= require_tree .
16 |
--------------------------------------------------------------------------------
/scanbooth_web/app/assets/javascripts/users.js.coffee:
--------------------------------------------------------------------------------
1 | # Place all the behaviors and hooks related to the matching controller here.
2 | # All this logic will automatically be available in application.js.
3 | # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
4 |
--------------------------------------------------------------------------------
/scanbooth_web/app/assets/javascripts/welcome.js.coffee:
--------------------------------------------------------------------------------
1 | # Place all the behaviors and hooks related to the matching controller here.
2 | # All this logic will automatically be available in application.js.
3 | # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
4 |
--------------------------------------------------------------------------------
/scanbooth_web/app/assets/stylesheets/admin.css.scss:
--------------------------------------------------------------------------------
1 | // Place all the styles related to the admin controller here.
2 | // They will automatically be included in application.css.
3 | // You can use Sass (SCSS) here: http://sass-lang.com/
4 |
--------------------------------------------------------------------------------
/scanbooth_web/app/assets/stylesheets/application.css:
--------------------------------------------------------------------------------
1 | /*
2 | * This is a manifest file that'll be compiled into application.css, which will include all the files
3 | * listed below.
4 | *
5 | * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6 | * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7 | *
8 | * You're free to add application-wide styles to this file and they'll appear at the top of the
9 | * compiled file, but it's generally better to create a new file per style scope.
10 | *
11 | *= require_self
12 | *= require_tree .
13 | */
14 |
--------------------------------------------------------------------------------
/scanbooth_web/app/assets/stylesheets/scaffolds.css.scss:
--------------------------------------------------------------------------------
1 | body {
2 | background-color: #fff;
3 | color: #333;
4 | font-family: verdana, arial, helvetica, sans-serif;
5 | font-size: 13px;
6 | line-height: 18px;
7 | }
8 |
9 | p, ol, ul, td {
10 | font-family: verdana, arial, helvetica, sans-serif;
11 | font-size: 13px;
12 | line-height: 18px;
13 | }
14 |
15 | pre {
16 | background-color: #eee;
17 | padding: 10px;
18 | font-size: 11px;
19 | }
20 |
21 | a {
22 | color: #000;
23 | &:visited {
24 | color: #666;
25 | }
26 | &:hover {
27 | color: #fff;
28 | background-color: #000;
29 | }
30 | }
31 |
32 | div {
33 | &.field, &.actions {
34 | margin-bottom: 10px;
35 | }
36 | }
37 |
38 | #notice {
39 | color: green;
40 | }
41 |
42 | .field_with_errors {
43 | padding: 2px;
44 | background-color: red;
45 | display: table;
46 | }
47 |
48 | #error_explanation {
49 | width: 450px;
50 | border: 2px solid red;
51 | padding: 7px;
52 | padding-bottom: 0;
53 | margin-bottom: 20px;
54 | background-color: #f0f0f0;
55 | h2 {
56 | text-align: left;
57 | font-weight: bold;
58 | padding: 5px 5px 5px 15px;
59 | font-size: 12px;
60 | margin: -7px;
61 | margin-bottom: 0px;
62 | background-color: #c00;
63 | color: #fff;
64 | }
65 | ul li {
66 | font-size: 12px;
67 | list-style: square;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/scanbooth_web/app/assets/stylesheets/users.css.scss:
--------------------------------------------------------------------------------
1 | // Place all the styles related to the users controller here.
2 | // They will automatically be included in application.css.
3 | // You can use Sass (SCSS) here: http://sass-lang.com/
4 |
5 | .filename {
6 | font-size:40px;
7 | text-align:center;
8 | font-weight:bold;
9 | }
10 |
--------------------------------------------------------------------------------
/scanbooth_web/app/assets/stylesheets/welcome.css.scss:
--------------------------------------------------------------------------------
1 | // Place all the styles related to the welcome controller here.
2 | // They will automatically be included in application.css.
3 | // You can use Sass (SCSS) here: http://sass-lang.com/
4 |
--------------------------------------------------------------------------------
/scanbooth_web/app/controllers/admin_controller.rb:
--------------------------------------------------------------------------------
1 | class AdminController < ApplicationController
2 | def index
3 | end
4 | end
5 |
--------------------------------------------------------------------------------
/scanbooth_web/app/controllers/application_controller.rb:
--------------------------------------------------------------------------------
1 | class ApplicationController < ActionController::Base
2 | protect_from_forgery
3 | end
4 |
--------------------------------------------------------------------------------
/scanbooth_web/app/controllers/users_controller.rb:
--------------------------------------------------------------------------------
1 | class UsersController < ApplicationController
2 | # GET /users
3 | # GET /users.json
4 | def index
5 | @users = User.all
6 |
7 | respond_to do |format|
8 | format.html # index.html.erb
9 | format.json { render json: @users }
10 | end
11 | end
12 |
13 | # GET /users/1
14 | # GET /users/1.json
15 | def show
16 | @user = User.find(params[:id])
17 |
18 | respond_to do |format|
19 | format.html # show.html.erb
20 | format.json { render json: @user }
21 | end
22 | end
23 |
24 | # GET /users/new
25 | # GET /users/new.json
26 | def new
27 | @user = User.new
28 |
29 | respond_to do |format|
30 | format.html # new.html.erb
31 | format.json { render json: @user }
32 | end
33 | end
34 |
35 | # GET /users/1/edit
36 | def edit
37 | @user = User.find(params[:id])
38 | end
39 |
40 | # GET /users/1/upload_and_mail
41 | def upload_and_mail
42 | @user = User.find(params[:id])
43 | @user.async_upload_model
44 | end
45 |
46 | # POST /users
47 | # POST /users.json
48 | def create
49 | @user = User.new(params[:user])
50 |
51 | respond_to do |format|
52 | if @user.save
53 | format.html { redirect_to @user, notice: "Thank You! We'll be in touch when your scan is ready!" }
54 | format.json { render json: @user, status: :created, location: @user }
55 | else
56 | format.html { render action: "new" }
57 | format.json { render json: @user.errors, status: :unprocessable_entity }
58 | end
59 | end
60 | end
61 |
62 | # PUT /users/1
63 | # PUT /users/1.json
64 | def update
65 | @user = User.find(params[:id])
66 |
67 | respond_to do |format|
68 | if @user.update_attributes(params[:user])
69 | format.html { redirect_to @user, notice: 'User was successfully updated.' }
70 | format.json { head :no_content }
71 | else
72 | format.html { render action: "edit" }
73 | format.json { render json: @user.errors, status: :unprocessable_entity }
74 | end
75 | end
76 | end
77 |
78 | # DELETE /users/1
79 | # DELETE /users/1.json
80 | def destroy
81 | @user = User.find(params[:id])
82 | @user.destroy
83 |
84 | respond_to do |format|
85 | format.html { redirect_to users_url }
86 | format.json { head :no_content }
87 | end
88 | end
89 | end
90 |
--------------------------------------------------------------------------------
/scanbooth_web/app/controllers/welcome_controller.rb:
--------------------------------------------------------------------------------
1 | class WelcomeController < ApplicationController
2 | def index
3 | @user = User.new
4 | end
5 |
6 | def thanks
7 | end
8 | end
9 |
--------------------------------------------------------------------------------
/scanbooth_web/app/helpers/admin_helper.rb:
--------------------------------------------------------------------------------
1 | module AdminHelper
2 | end
3 |
--------------------------------------------------------------------------------
/scanbooth_web/app/helpers/application_helper.rb:
--------------------------------------------------------------------------------
1 | module ApplicationHelper
2 | end
3 |
--------------------------------------------------------------------------------
/scanbooth_web/app/helpers/users_helper.rb:
--------------------------------------------------------------------------------
1 | module UsersHelper
2 | end
3 |
--------------------------------------------------------------------------------
/scanbooth_web/app/helpers/welcome_helper.rb:
--------------------------------------------------------------------------------
1 | module WelcomeHelper
2 | end
3 |
--------------------------------------------------------------------------------
/scanbooth_web/app/jobs/ftp_upload.rb:
--------------------------------------------------------------------------------
1 | require 'net/ftp'
2 |
3 | module FtpUpload
4 | @queue = :upload
5 | FTP_SERVER = ScanBooth::Application.config.ftp[:server]
6 | FTP_USERNAME = ScanBooth::Application.config.ftp[:username]
7 | FTP_PASSWORD = ScanBooth::Application.config.ftp[:password]
8 |
9 | def self.perform(user_id)
10 |
11 | user = User.find(user_id)
12 | filename = user.scan_file_with_ext
13 | path = [ScanBooth::Application.config.scans_path, filename].join('/')
14 |
15 | ftp = Net::FTP.new(FTP_SERVER)
16 | ftp.login(FTP_USERNAME, FTP_PASSWORD)
17 | ftp.putbinaryfile(path, File.basename( path ))
18 | ftp.quit()
19 |
20 | user.external_download_id = filename
21 | user.save!
22 |
23 | if !user.mailed && ScanBooth::Application.config.scan_viewer_enabled && !user.external_view_id.blank?
24 | puts 'mailing user from ftp'
25 | UserMailer.scan_email(user).deliver
26 | user.mailed = true
27 | user.save!
28 | end
29 |
30 | end
31 | end
32 |
--------------------------------------------------------------------------------
/scanbooth_web/app/jobs/sketchfab_upload.rb:
--------------------------------------------------------------------------------
1 | require "uri"
2 | require "net/https"
3 | require "base64"
4 | require "rubygems"
5 | require "json"
6 |
7 | module SketchfabUpload
8 | @queue = :upload
9 | # Get your API key from your sketchfab account dashboard.
10 | API_KEY = ScanBooth::Application.config.sketchfab[:api_key]
11 | URL = "https://api.sketchfab.com/model"
12 |
13 | def self.perform(user_id)
14 |
15 | user = User.find(user_id)
16 | filename = user.scan_file_with_ext
17 | path = [ScanBooth::Application.config.scans_path, filename].join('/')
18 | # thumbnail_filepath = [ScanBooth::Application.config.scans_path, filename<<".png"].join('/')
19 | title = user.name || filename
20 | desc = ScanBooth::Application.config.sketchfab[:description]
21 | tags = ScanBooth::Application.config.sketchfab[:tags]
22 |
23 | contents = Base64.encode64(File.read(path))
24 | # thumbnail = Base64.encode64(File.read(thumbnail_filepath))
25 |
26 | data = {
27 | title: title,
28 | description: desc,
29 | contents: contents,
30 | filename: filename,
31 | tags: tags,
32 | # thumbnail: thumbnail,
33 | token: API_KEY
34 | }
35 |
36 | uri = URI.parse(URL)
37 | p uri
38 | http = Net::HTTP.new(uri.host, uri.port)
39 | http.use_ssl = true
40 |
41 | request = Net::HTTP::Post.new(uri.request_uri, initheader = {'Content-Type' =>'application/json'})
42 | request.body = data.to_json
43 |
44 | response = http.request(request)
45 |
46 | data = JSON.parse(response.body)
47 |
48 | if data['success']
49 | user.external_view_id = data['id']
50 | user.save!
51 |
52 | if !user.mailed && ScanBooth::Application.config.scan_download_enabled && !user.external_download_id.blank?
53 | puts 'mailing user from sketchfab'
54 | UserMailer.scan_email(user).deliver
55 | user.mailed = true
56 | user.save!
57 | end
58 | p "https://sketchfab.com/show/#{data['id']}"
59 | else
60 | p "Upload to sketchfab failed: #{response.body}"
61 | end
62 |
63 | end
64 | end
65 |
--------------------------------------------------------------------------------
/scanbooth_web/app/mailers/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/app/mailers/.gitkeep
--------------------------------------------------------------------------------
/scanbooth_web/app/mailers/user_mailer.rb:
--------------------------------------------------------------------------------
1 | class UserMailer < ActionMailer::Base
2 | default from: ScanBooth::Application.config.scan_mail[:from]
3 | def scan_email(user)
4 | @user = user
5 | @scan_view_url = [ScanBooth::Application.config.scan_view_url, @user.external_view_id].join
6 | @scan_download_url = [ScanBooth::Application.config.scan_download_url, @user.external_download_id].join
7 | mail(:to => @user.email, :subject => ScanBooth::Application.config.scan_mail[:subject])
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/scanbooth_web/app/models/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/app/models/.gitkeep
--------------------------------------------------------------------------------
/scanbooth_web/app/models/user.rb:
--------------------------------------------------------------------------------
1 | class User < ActiveRecord::Base
2 | attr_accessible :name, :email, :scan_file, :mailed, :printed, :external_view_id, :external_download_id
3 | before_create :generate_filename
4 | after_create :async_upload_model
5 |
6 | def generate_filename
7 | self.scan_file = self.name.gsub(/[^a-z0-9\\-]/i,'')
8 | self.scan_file = self.id if self.scan_file.blank?;
9 | end
10 |
11 | def scan_file_with_ext
12 | [self.scan_file, ScanBooth::Application.config.scan_extension].join('.')
13 | end
14 |
15 | def unique_file_with_ext
16 | [self.scan_file, self.created_at.strftime('%Y-%m-%d-%H%M%S')].join('_')
17 | end
18 |
19 | def async_upload_model
20 | Resque.enqueue(SketchfabUpload, self.id) if ScanBooth::Application.config.scan_viewer_enabled
21 | Resque.enqueue(FtpUpload, self.id) if ScanBooth::Application.config.scan_download_enabled
22 | end
23 | end
24 |
--------------------------------------------------------------------------------
/scanbooth_web/app/views/admin/index.html.erb:
--------------------------------------------------------------------------------
1 | Admin#index
2 | Find me in app/views/admin/index.html.erb
3 |
--------------------------------------------------------------------------------
/scanbooth_web/app/views/layouts/application.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ScanBooth
5 | <%= stylesheet_link_tag "application", :media => "all" %>
6 | <%= javascript_include_tag "application" %>
7 | <%= csrf_meta_tags %>
8 |
9 |
10 |
11 | <%= yield %>
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/scanbooth_web/app/views/user_mailer/scan_email.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Thanks for getting 3D scanned, <%= @user.name %>
8 |
9 | <% if ScanBooth::Application.config.scan_viewer_enabled %>
10 |
11 | <% end %>
12 |
13 | <% if ScanBooth::Application.config.scan_download_enabled %>
14 |
15 | <% end %>
16 |
17 | <% if ScanBooth::Application.config.scan_viewer_enabled %>
18 | Please note: Your scan will only be viewable on sketchfab for 3 months.
19 |
20 |
21 |
22 |
23 |
24 | <% end %>
25 |
26 | <%= ScanBooth::Application.config.scan_mail[:thanks_message] %>
27 |
28 |
29 | Sincerely,
30 | <%=ScanBooth::Application.config.contact_info[:name]%>
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/scanbooth_web/app/views/user_mailer/scan_email.text.erb:
--------------------------------------------------------------------------------
1 | Thanks for getting 3D scanned, <%= @user.name %>
2 | ===============================================
3 |
4 | <% if ScanBooth::Application.config.scan_viewer_enabled %>
5 | View your scan here: <%=@scan_view_url%>
6 | <% end %>
7 |
8 | <% if ScanBooth::Application.config.scan_download_enabled %>
9 | Download a copy your scan here: <%=@scan_download_url%>">
10 | <% end %>
11 |
12 | <% if ScanBooth::Application.config.scan_viewer_enabled %>
13 | Please note: Your scan will only be viewable on sketchfab for 3 months.
14 | <% end %>
15 |
16 | <%= ScanBooth::Application.config.scan_mail[:thanks_message] %>
17 |
18 | Sincerely,
19 | <%=ScanBooth::Application.config.contact_info[:name]%>
20 | <%=ScanBooth::Application.config.contact_info[:email]%>
21 |
--------------------------------------------------------------------------------
/scanbooth_web/app/views/users/_admin_form.html.erb:
--------------------------------------------------------------------------------
1 | <%= form_for(@user) do |f| %>
2 | <% if @user.errors.any? %>
3 |
4 |
<%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:
5 |
6 |
7 | <% @user.errors.full_messages.each do |msg| %>
8 | - <%= msg %>
9 | <% end %>
10 |
11 |
12 | <% end %>
13 |
14 |
15 | <%= f.label :name %>
16 | <%= f.text_field :name %>
17 |
18 |
19 | <%= f.label :email %>
20 | <%= f.text_field :email %>
21 |
22 |
23 | <%= f.label :scan_file %>
24 | <%= f.text_field :scan_file %>
25 |
26 |
27 | <%= f.label :external_view_id %>
28 | <%= f.text_field :external_view_id %>
29 |
30 |
31 | <%= f.submit "Submit" %>
32 |
33 | <% end %>
34 |
--------------------------------------------------------------------------------
/scanbooth_web/app/views/users/_form.html.erb:
--------------------------------------------------------------------------------
1 | <%= form_for(@user) do |f| %>
2 | <% if @user.errors.any? %>
3 |
4 |
<%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:
5 |
6 |
7 | <% @user.errors.full_messages.each do |msg| %>
8 | - <%= msg %>
9 | <% end %>
10 |
11 |
12 | <% end %>
13 |
14 |
15 | <%= f.label :name %>
16 | <%= f.text_field :name %>
17 |
18 |
19 | <%= f.label :email %>
20 | <%= f.text_field :email %>
21 |
22 |
23 | <%= f.label :printed %>
24 | <%= f.check_box :printed %>
25 |
26 |
27 | <%= f.label :mailed %>
28 | <%= f.check_box :mailed %>
29 |
30 |
31 | <%= f.submit "Submit" %>
32 |
33 | <% end %>
34 |
--------------------------------------------------------------------------------
/scanbooth_web/app/views/users/edit.html.erb:
--------------------------------------------------------------------------------
1 | Editing user
2 |
3 | <%= render 'form' %>
4 |
5 | <%= link_to 'Show', @user %> |
6 | <%= link_to 'Back', users_path %>
7 |
--------------------------------------------------------------------------------
/scanbooth_web/app/views/users/index.html.erb:
--------------------------------------------------------------------------------
1 | Listing users
2 |
3 |
4 |
5 | Name |
6 | Email |
7 | Scan file |
8 | External View Id |
9 | External Download Id |
10 | Printed |
11 | Mailed |
12 | Actions |
13 | |
14 | |
15 | |
16 |
17 |
18 | <% @users.each do |user| %>
19 |
20 | <%= user.name %> |
21 | <%= user.email %> |
22 | <%= user.scan_file %> |
23 | <%= user.external_view_id %> |
24 | <%= user.external_download_id %> |
25 | <%= user.printed %> |
26 | <%= user.mailed %> |
27 | <%= link_to 'Show', user %> |
28 | <%= link_to 'Edit', edit_user_path(user) %> |
29 | <%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %> |
30 | <%= link_to 'Upload and Mail', upload_and_mail_user_path(user) %> |
31 |
32 | <% end %>
33 |
34 |
35 |
36 |
37 | <%= link_to 'New User', new_user_path %>
38 |
--------------------------------------------------------------------------------
/scanbooth_web/app/views/users/new.html.erb:
--------------------------------------------------------------------------------
1 | New user
2 |
3 | <%= render 'form' %>
4 |
5 | <%= link_to 'Back', users_path %>
6 |
--------------------------------------------------------------------------------
/scanbooth_web/app/views/users/scan_processed.html.erb:
--------------------------------------------------------------------------------
1 |
2 | Hopefully the files are being uploaded right now.
3 | <%= @user.name %>
4 | <%= @user.email %>
5 | <%= @user.scan_file %>
6 |
7 |
8 |
--------------------------------------------------------------------------------
/scanbooth_web/app/views/users/show.html.erb:
--------------------------------------------------------------------------------
1 | <%= notice %>
2 |
3 |
4 | Name:
5 | <%= @user.name %>
6 |
7 |
8 |
9 | Email:
10 | <%= @user.email %>
11 |
12 |
13 |
14 | Scanned at:
15 | <%= @user.created_at %>
16 |
17 |
18 |
19 | <%= @user.scan_file %>
20 |
21 |
22 | <%= link_to 'New Scan', welcome_index_path %>
23 |
--------------------------------------------------------------------------------
/scanbooth_web/app/views/welcome/index.html.erb:
--------------------------------------------------------------------------------
1 | Get 3D Scanned
2 | Thanks for stopping by our booth!
3 |
4 | Please fill out this form so that we can send you your 3D scan.
5 |
6 | <%= render 'users/form' %>
7 |
--------------------------------------------------------------------------------
/scanbooth_web/app/views/welcome/thanks.html.erb:
--------------------------------------------------------------------------------
1 | Welcome#thanks
2 | Find me in app/views/welcome/thanks.html.erb
3 |
--------------------------------------------------------------------------------
/scanbooth_web/config.ru:
--------------------------------------------------------------------------------
1 | # This file is used by Rack-based servers to start the application.
2 |
3 | require ::File.expand_path('../config/environment', __FILE__)
4 | run ScanBooth::Application
5 |
--------------------------------------------------------------------------------
/scanbooth_web/config/application.rb:
--------------------------------------------------------------------------------
1 | require File.expand_path('../boot', __FILE__)
2 |
3 | require 'rails/all'
4 |
5 | if defined?(Bundler)
6 | # If you precompile assets before deploying to production, use this line
7 | Bundler.require(*Rails.groups(:assets => %w(development test)))
8 | # If you want your assets lazily compiled in production, use this line
9 | # Bundler.require(:default, :assets, Rails.env)
10 | end
11 |
12 | module ScanBooth
13 | class Application < Rails::Application
14 | # Settings in config/environments/* take precedence over those specified here.
15 | # Application configuration should go into files in config/initializers
16 | # -- all .rb files in that directory are automatically loaded.
17 |
18 | # Custom directories with classes and modules you want to be autoloadable.
19 | # config.autoload_paths += %W(#{config.root}/extras)
20 |
21 | # Only load the plugins named here, in the order given (default is alphabetical).
22 | # :all can be used as a placeholder for all plugins not explicitly named.
23 | # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
24 |
25 | # Activate observers that should always be running.
26 | # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
27 |
28 | # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
29 | # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
30 | # config.time_zone = 'Central Time (US & Canada)'
31 |
32 | # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
33 | # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
34 | # config.i18n.default_locale = :de
35 |
36 | # Configure the default encoding used in templates for Ruby 1.9.
37 | config.encoding = "utf-8"
38 |
39 | # Configure sensitive parameters which will be filtered from the log file.
40 | config.filter_parameters += [:password]
41 |
42 | # Enable escaping HTML in JSON.
43 | config.active_support.escape_html_entities_in_json = true
44 |
45 | # Use SQL instead of Active Record's schema dumper when creating the database.
46 | # This is necessary if your schema can't be completely dumped by the schema dumper,
47 | # like if you have constraints or database-specific column types
48 | # config.active_record.schema_format = :sql
49 |
50 | # Enforce whitelist mode for mass assignment.
51 | # This will create an empty whitelist of attributes available for mass-assignment for all models
52 | # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
53 | # parameters by using an attr_accessible or attr_protected declaration.
54 | config.active_record.whitelist_attributes = true
55 |
56 | # Enable the asset pipeline
57 | config.assets.enabled = true
58 |
59 | # Version of your assets, change this if you want to expire all your assets
60 | config.assets.version = '1.0'
61 | end
62 | end
63 |
--------------------------------------------------------------------------------
/scanbooth_web/config/boot.rb:
--------------------------------------------------------------------------------
1 | require 'rubygems'
2 |
3 | # Set up gems listed in the Gemfile.
4 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
5 |
6 | require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
7 |
--------------------------------------------------------------------------------
/scanbooth_web/config/database.yml:
--------------------------------------------------------------------------------
1 | # SQLite version 3.x
2 | # gem install sqlite3
3 | #
4 | # Ensure the SQLite 3 gem is defined in your Gemfile
5 | # gem 'sqlite3'
6 | development:
7 | adapter: sqlite3
8 | database: db/development.sqlite3
9 | pool: 5
10 | timeout: 5000
11 |
12 | # Warning: The database defined as "test" will be erased and
13 | # re-generated from your development database when you run "rake".
14 | # Do not set this db to the same as development or production.
15 | test:
16 | adapter: sqlite3
17 | database: db/test.sqlite3
18 | pool: 5
19 | timeout: 5000
20 |
21 | production:
22 | adapter: sqlite3
23 | database: db/production.sqlite3
24 | pool: 5
25 | timeout: 5000
26 |
--------------------------------------------------------------------------------
/scanbooth_web/config/environment.rb:
--------------------------------------------------------------------------------
1 | # Load the rails application
2 | require File.expand_path('../application', __FILE__)
3 |
4 | # Initialize the rails application
5 | ScanBooth::Application.initialize!
6 |
--------------------------------------------------------------------------------
/scanbooth_web/config/environments/development.rb:
--------------------------------------------------------------------------------
1 | ScanBooth::Application.configure do
2 | # Settings specified here will take precedence over those in config/application.rb
3 |
4 | # In the development environment your application's code is reloaded on
5 | # every request. This slows down response time but is perfect for development
6 | # since you don't have to restart the web server when you make code changes.
7 | config.cache_classes = false
8 |
9 | # Log error messages when you accidentally call methods on nil.
10 | config.whiny_nils = true
11 |
12 | # Show full error reports and disable caching
13 | config.consider_all_requests_local = true
14 | config.action_controller.perform_caching = false
15 |
16 | # Don't care if the mailer can't send
17 | config.action_mailer.raise_delivery_errors = false
18 |
19 | # Print deprecation notices to the Rails logger
20 | config.active_support.deprecation = :log
21 |
22 | # Only use best-standards-support built into browsers
23 | config.action_dispatch.best_standards_support = :builtin
24 |
25 | # Raise exception on mass assignment protection for Active Record models
26 | config.active_record.mass_assignment_sanitizer = :strict
27 |
28 | # Log the query plan for queries taking more than this (works
29 | # with SQLite, MySQL, and PostgreSQL)
30 | config.active_record.auto_explain_threshold_in_seconds = 0.5
31 |
32 | # Do not compress assets
33 | config.assets.compress = false
34 |
35 | # Expands the lines which load the assets
36 | config.assets.debug = true
37 |
38 | config.action_mailer.raise_delivery_errors = true
39 | config.action_mailer.perform_deliveries = true
40 | config.action_mailer.delivery_method = :smtp
41 |
42 | config.action_mailer.smtp_settings = {
43 | :address => "smtp.gmail.com",
44 | :port => 587,
45 | :domain => 'gmail.com',
46 | :user_name => '',
47 | :password => '',
48 | :authentication => 'plain',
49 | :enable_starttls_auto => true
50 | }
51 |
52 | config.scan_mail = {
53 | from: [config.action_mailer.smtp_settings[:user_name], config.action_mailer.smtp_settings[:domain]].join('@'),
54 | subject: "Your 3D scan from our booth",
55 | thanks_message: "We hope you had a great time getting scanned!"
56 | }
57 |
58 | config.scans_path = "/scans"
59 | # Absolute path to the scans to upload for external sites and printing
60 | config.scan_extension = "stl"
61 |
62 | config.scan_viewer_enabled = false
63 | config.scan_view_url = "https://sketchfab.com/show/"
64 | config.sketchfab = {
65 | api_key: "",
66 | description: "",
67 | tags: ""
68 | }
69 |
70 | config.scan_download_enabled = false
71 | config.scan_download_url = ""
72 | config.ftp = {
73 | server: "",
74 | username: "",
75 | password: ""
76 | }
77 |
78 | config.contact_info = {
79 | name: '',
80 | email: ''
81 | }
82 |
83 | config.tweet = {
84 | text: "Check out my 3D scan",
85 | hashtags: ""
86 | }
87 |
88 | end
89 |
--------------------------------------------------------------------------------
/scanbooth_web/config/environments/production.rb:
--------------------------------------------------------------------------------
1 | ScanBooth::Application.configure do
2 | # Settings specified here will take precedence over those in config/application.rb
3 |
4 | # Code is not reloaded between requests
5 | config.cache_classes = true
6 |
7 | # Full error reports are disabled and caching is turned on
8 | config.consider_all_requests_local = false
9 | config.action_controller.perform_caching = true
10 |
11 | # Disable Rails's static asset server (Apache or nginx will already do this)
12 | config.serve_static_assets = false
13 |
14 | # Compress JavaScripts and CSS
15 | config.assets.compress = true
16 |
17 | # Don't fallback to assets pipeline if a precompiled asset is missed
18 | config.assets.compile = false
19 |
20 | # Generate digests for assets URLs
21 | config.assets.digest = true
22 |
23 | # Defaults to nil and saved in location specified by config.assets.prefix
24 | # config.assets.manifest = YOUR_PATH
25 |
26 | # Specifies the header that your server uses for sending files
27 | # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
28 | # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
29 |
30 | # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
31 | # config.force_ssl = true
32 |
33 | # See everything in the log (default is :info)
34 | # config.log_level = :debug
35 |
36 | # Prepend all log lines with the following tags
37 | # config.log_tags = [ :subdomain, :uuid ]
38 |
39 | # Use a different logger for distributed setups
40 | # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
41 |
42 | # Use a different cache store in production
43 | # config.cache_store = :mem_cache_store
44 |
45 | # Enable serving of images, stylesheets, and JavaScripts from an asset server
46 | # config.action_controller.asset_host = "http://assets.example.com"
47 |
48 | # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
49 | # config.assets.precompile += %w( search.js )
50 |
51 | # Disable delivery errors, bad email addresses will be ignored
52 | # config.action_mailer.raise_delivery_errors = false
53 |
54 | # Enable threaded mode
55 | # config.threadsafe!
56 |
57 | # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
58 | # the I18n.default_locale when a translation can not be found)
59 | config.i18n.fallbacks = true
60 |
61 | # Send deprecation notices to registered listeners
62 | config.active_support.deprecation = :notify
63 |
64 | # Log the query plan for queries taking more than this (works
65 | # with SQLite, MySQL, and PostgreSQL)
66 | # config.active_record.auto_explain_threshold_in_seconds = 0.5
67 | end
68 |
--------------------------------------------------------------------------------
/scanbooth_web/config/environments/test.rb:
--------------------------------------------------------------------------------
1 | ScanBooth::Application.configure do
2 | # Settings specified here will take precedence over those in config/application.rb
3 |
4 | # The test environment is used exclusively to run your application's
5 | # test suite. You never need to work with it otherwise. Remember that
6 | # your test database is "scratch space" for the test suite and is wiped
7 | # and recreated between test runs. Don't rely on the data there!
8 | config.cache_classes = true
9 |
10 | # Configure static asset server for tests with Cache-Control for performance
11 | config.serve_static_assets = true
12 | config.static_cache_control = "public, max-age=3600"
13 |
14 | # Log error messages when you accidentally call methods on nil
15 | config.whiny_nils = true
16 |
17 | # Show full error reports and disable caching
18 | config.consider_all_requests_local = true
19 | config.action_controller.perform_caching = false
20 |
21 | # Raise exceptions instead of rendering exception templates
22 | config.action_dispatch.show_exceptions = false
23 |
24 | # Disable request forgery protection in test environment
25 | config.action_controller.allow_forgery_protection = false
26 |
27 | # Tell Action Mailer not to deliver emails to the real world.
28 | # The :test delivery method accumulates sent emails in the
29 | # ActionMailer::Base.deliveries array.
30 | config.action_mailer.delivery_method = :test
31 |
32 | # Raise exception on mass assignment protection for Active Record models
33 | config.active_record.mass_assignment_sanitizer = :strict
34 |
35 | # Print deprecation notices to the stderr
36 | config.active_support.deprecation = :stderr
37 | end
38 |
--------------------------------------------------------------------------------
/scanbooth_web/config/initializers/backtrace_silencers.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5 |
6 | # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7 | # Rails.backtrace_cleaner.remove_silencers!
8 |
--------------------------------------------------------------------------------
/scanbooth_web/config/initializers/inflections.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Add new inflection rules using the following format
4 | # (all these examples are active by default):
5 | # ActiveSupport::Inflector.inflections do |inflect|
6 | # inflect.plural /^(ox)$/i, '\1en'
7 | # inflect.singular /^(ox)en/i, '\1'
8 | # inflect.irregular 'person', 'people'
9 | # inflect.uncountable %w( fish sheep )
10 | # end
11 | #
12 | # These inflection rules are supported but not enabled by default:
13 | # ActiveSupport::Inflector.inflections do |inflect|
14 | # inflect.acronym 'RESTful'
15 | # end
16 |
--------------------------------------------------------------------------------
/scanbooth_web/config/initializers/mime_types.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Add new mime types for use in respond_to blocks:
4 | # Mime::Type.register "text/richtext", :rtf
5 | # Mime::Type.register_alias "text/html", :iphone
6 |
--------------------------------------------------------------------------------
/scanbooth_web/config/initializers/resque.rb:
--------------------------------------------------------------------------------
1 | # require 'resque_scheduler'
2 | require 'resque/server'
3 |
4 | # Resque.redis = 'localhost:6379'
5 | # Resque.redis.namespace = "resque:SchedulerExample"
6 |
7 | # If you want to be able to dynamically change the schedule,
8 | # uncomment this line. A dynamic schedule can be updated via the
9 | # Resque::Scheduler.set_schedule (and remove_schedule) methods.
10 | # When dynamic is set to true, the scheduler process looks for
11 | # schedule changes and applies them on the fly.
12 | # Note: This feature is only available in >=2.0.0.
13 | #Resque::Scheduler.dynamic = true
14 |
15 | Dir["#{Rails.root}/app/jobs/*.rb"].each { |file| require file }
16 |
17 | # The schedule doesn't need to be stored in a YAML, it just needs to
18 | # be a hash. YAML is usually the easiest.
19 | # Resque.schedule = YAML.load_file(Rails.root.join('config', 'resque_schedule.yml'))
20 |
--------------------------------------------------------------------------------
/scanbooth_web/config/initializers/secret_token.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Your secret key for verifying the integrity of signed cookies.
4 | # If you change this key, all old signed cookies will become invalid!
5 | # Make sure the secret is at least 30 characters and all random,
6 | # no regular words or you'll be exposed to dictionary attacks.
7 | ScanBooth::Application.config.secret_token = ''
8 |
--------------------------------------------------------------------------------
/scanbooth_web/config/initializers/session_store.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | ScanBooth::Application.config.session_store :cookie_store, key: '_scan_yourself_session'
4 |
5 | # Use the database for sessions instead of the cookie-based default,
6 | # which shouldn't be used to store highly confidential information
7 | # (create the session table with "rails generate session_migration")
8 | # ScanBooth::Application.config.session_store :active_record_store
9 |
--------------------------------------------------------------------------------
/scanbooth_web/config/initializers/wrap_parameters.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 | #
3 | # This file contains settings for ActionController::ParamsWrapper which
4 | # is enabled by default.
5 |
6 | # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7 | ActiveSupport.on_load(:action_controller) do
8 | wrap_parameters format: [:json]
9 | end
10 |
11 | # Disable root element in JSON by default.
12 | ActiveSupport.on_load(:active_record) do
13 | self.include_root_in_json = false
14 | end
15 |
--------------------------------------------------------------------------------
/scanbooth_web/config/locales/en.yml:
--------------------------------------------------------------------------------
1 | # Sample localization file for English. Add more files in this directory for other locales.
2 | # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3 |
4 | en:
5 | hello: "Hello world"
6 |
--------------------------------------------------------------------------------
/scanbooth_web/config/routes.rb:
--------------------------------------------------------------------------------
1 | ScanBooth::Application.routes.draw do
2 |
3 | match "admin" => 'admin#index'
4 | get "admin/index"
5 |
6 | get "welcome/index"
7 |
8 | get "welcome/thanks"
9 |
10 | resources :users do
11 | member do
12 | get 'upload_and_mail'
13 | end
14 | end
15 |
16 | # The priority is based upon order of creation:
17 | # first created -> highest priority.
18 |
19 | # Sample of regular route:
20 | # match 'products/:id' => 'catalog#view'
21 | # Keep in mind you can assign values other than :controller and :action
22 |
23 | # Sample of named route:
24 | # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
25 | # This route can be invoked with purchase_url(:id => product.id)
26 |
27 | # Sample resource route (maps HTTP verbs to controller actions automatically):
28 | # resources :products
29 |
30 | # Sample resource route with options:
31 | # resources :products do
32 | # member do
33 | # get 'short'
34 | # post 'toggle'
35 | # end
36 | #
37 | # collection do
38 | # get 'sold'
39 | # end
40 | # end
41 |
42 | # Sample resource route with sub-resources:
43 | # resources :products do
44 | # resources :comments, :sales
45 | # resource :seller
46 | # end
47 |
48 | # Sample resource route with more complex sub-resources
49 | # resources :products do
50 | # resources :comments
51 | # resources :sales do
52 | # get 'recent', :on => :collection
53 | # end
54 | # end
55 |
56 | # Sample resource route within a namespace:
57 | # namespace :admin do
58 | # # Directs /admin/products/* to Admin::ProductsController
59 | # # (app/controllers/admin/products_controller.rb)
60 | # resources :products
61 | # end
62 |
63 | # You can have the root of your site routed with "root"
64 | # just remember to delete public/index.html.
65 | root :to => 'welcome#index'
66 |
67 | # See how all your routes lay out with "rake routes"
68 |
69 | # This is a legacy wild controller route that's not recommended for RESTful applications.
70 | # Note: This route will make all actions in every controller accessible via GET requests.
71 | # match ':controller(/:action(/:id))(.:format)'
72 |
73 | mount Resque::Server.new, :at => "/resque"
74 | end
75 |
--------------------------------------------------------------------------------
/scanbooth_web/db/migrate/20120921172401_create_users.rb:
--------------------------------------------------------------------------------
1 | class CreateUsers < ActiveRecord::Migration
2 | def change
3 | create_table :users do |t|
4 | t.string :name
5 | t.string :email
6 | t.string :scan_file
7 | t.string :external_id
8 |
9 | t.timestamps
10 | end
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/scanbooth_web/db/migrate/20120923184415_add_external_download_id_to_user.rb:
--------------------------------------------------------------------------------
1 | class AddExternalDownloadIdToUser < ActiveRecord::Migration
2 | def change
3 | add_column :users, :external_download_id, :string
4 | end
5 | end
6 |
--------------------------------------------------------------------------------
/scanbooth_web/db/migrate/20120923184455_rename_user_external_id_to_external_view_id.rb:
--------------------------------------------------------------------------------
1 | class RenameUserExternalIdToExternalViewId < ActiveRecord::Migration
2 | def change
3 | rename_column :users, :external_id, :external_view_id
4 | end
5 | end
6 |
--------------------------------------------------------------------------------
/scanbooth_web/db/migrate/20120923205345_add_status_bools_to_user.rb:
--------------------------------------------------------------------------------
1 | class AddStatusBoolsToUser < ActiveRecord::Migration
2 | def change
3 | add_column :users, :printed, :boolean, :default => false
4 | add_column :users, :mailed, :boolean, :default => false
5 | end
6 | end
7 |
--------------------------------------------------------------------------------
/scanbooth_web/db/schema.rb:
--------------------------------------------------------------------------------
1 | # encoding: UTF-8
2 | # This file is auto-generated from the current state of the database. Instead
3 | # of editing this file, please use the migrations feature of Active Record to
4 | # incrementally modify your database, and then regenerate this schema definition.
5 | #
6 | # Note that this schema.rb definition is the authoritative source for your
7 | # database schema. If you need to create the application database on another
8 | # system, you should be using db:schema:load, not running all the migrations
9 | # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10 | # you'll amass, the slower it'll run and the greater likelihood for issues).
11 | #
12 | # It's strongly recommended to check this file into your version control system.
13 |
14 | ActiveRecord::Schema.define(:version => 20120923205345) do
15 |
16 | create_table "users", :force => true do |t|
17 | t.string "name"
18 | t.string "email"
19 | t.string "scan_file"
20 | t.string "external_view_id"
21 | t.datetime "created_at", :null => false
22 | t.datetime "updated_at", :null => false
23 | t.string "external_download_id"
24 | t.boolean "printed", :default => false
25 | t.boolean "mailed", :default => false
26 | end
27 |
28 | end
29 |
--------------------------------------------------------------------------------
/scanbooth_web/db/seeds.rb:
--------------------------------------------------------------------------------
1 | # This file should contain all the record creation needed to seed the database with its default values.
2 | # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
3 | #
4 | # Examples:
5 | #
6 | # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
7 | # Mayor.create(name: 'Emanuel', city: cities.first)
8 |
--------------------------------------------------------------------------------
/scanbooth_web/doc/README_FOR_APP:
--------------------------------------------------------------------------------
1 | Use this README file to introduce your application and point to useful places in the API for learning more.
2 | Run "rake doc:app" to generate API documentation for your models, controllers, helpers, and libraries.
3 |
--------------------------------------------------------------------------------
/scanbooth_web/dump.rdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/dump.rdb
--------------------------------------------------------------------------------
/scanbooth_web/lib/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/lib/assets/.gitkeep
--------------------------------------------------------------------------------
/scanbooth_web/lib/tasks/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/lib/tasks/.gitkeep
--------------------------------------------------------------------------------
/scanbooth_web/lib/tasks/resque.rake:
--------------------------------------------------------------------------------
1 | require 'resque/tasks'
2 |
--------------------------------------------------------------------------------
/scanbooth_web/log/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/log/.gitkeep
--------------------------------------------------------------------------------
/scanbooth_web/public/404.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | The page you were looking for doesn't exist (404)
5 |
17 |
18 |
19 |
20 |
21 |
22 |
The page you were looking for doesn't exist.
23 |
You may have mistyped the address or the page may have moved.
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/scanbooth_web/public/422.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | The change you wanted was rejected (422)
5 |
17 |
18 |
19 |
20 |
21 |
22 |
The change you wanted was rejected.
23 |
Maybe you tried to change something you didn't have access to.
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/scanbooth_web/public/500.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | We're sorry, but something went wrong (500)
5 |
17 |
18 |
19 |
20 |
21 |
22 |
We're sorry, but something went wrong.
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/scanbooth_web/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/public/favicon.ico
--------------------------------------------------------------------------------
/scanbooth_web/public/robots.txt:
--------------------------------------------------------------------------------
1 | # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2 | #
3 | # To ban all spiders from the entire site uncomment the next two lines:
4 | # User-Agent: *
5 | # Disallow: /
6 |
--------------------------------------------------------------------------------
/scanbooth_web/script/rails:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3 |
4 | APP_PATH = File.expand_path('../../config/application', __FILE__)
5 | require File.expand_path('../../config/boot', __FILE__)
6 | require 'rails/commands'
7 |
--------------------------------------------------------------------------------
/scanbooth_web/test/fixtures/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/test/fixtures/.gitkeep
--------------------------------------------------------------------------------
/scanbooth_web/test/fixtures/users.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2 |
3 | one:
4 | name: MyString
5 | email: MyString
6 | scan_file: MyString
7 | external_view_id: MyString
8 |
9 | two:
10 | name: MyString
11 | email: MyString
12 | scan_file: MyString
13 | external_view_id: MyString
14 |
--------------------------------------------------------------------------------
/scanbooth_web/test/functional/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/test/functional/.gitkeep
--------------------------------------------------------------------------------
/scanbooth_web/test/functional/admin_controller_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class AdminControllerTest < ActionController::TestCase
4 | test "should get index" do
5 | get :index
6 | assert_response :success
7 | end
8 |
9 | end
10 |
--------------------------------------------------------------------------------
/scanbooth_web/test/functional/user_mailer_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class UserMailerTest < ActionMailer::TestCase
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/scanbooth_web/test/functional/users_controller_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class UsersControllerTest < ActionController::TestCase
4 | setup do
5 | @user = users(:one)
6 | end
7 |
8 | test "should get index" do
9 | get :index
10 | assert_response :success
11 | assert_not_nil assigns(:users)
12 | end
13 |
14 | test "should get new" do
15 | get :new
16 | assert_response :success
17 | end
18 |
19 | test "should create user" do
20 | assert_difference('User.count') do
21 | post :create, user: { email: @user.email, external_view_id: @user.external_view_id, name: @user.name, scan_file: @user.scan_file }
22 | end
23 |
24 | assert_redirected_to user_path(assigns(:user))
25 | end
26 |
27 | test "should show user" do
28 | get :show, id: @user
29 | assert_response :success
30 | end
31 |
32 | test "should get edit" do
33 | get :edit, id: @user
34 | assert_response :success
35 | end
36 |
37 | test "should update user" do
38 | put :update, id: @user, user: { email: @user.email, external_view_id: @user.external_view_id, name: @user.name, scan_file: @user.scan_file }
39 | assert_redirected_to user_path(assigns(:user))
40 | end
41 |
42 | test "should destroy user" do
43 | assert_difference('User.count', -1) do
44 | delete :destroy, id: @user
45 | end
46 |
47 | assert_redirected_to users_path
48 | end
49 | end
50 |
--------------------------------------------------------------------------------
/scanbooth_web/test/functional/welcome_controller_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class WelcomeControllerTest < ActionController::TestCase
4 | test "should get index" do
5 | get :index
6 | assert_response :success
7 | end
8 |
9 | test "should get thanks" do
10 | get :thanks
11 | assert_response :success
12 | end
13 |
14 | end
15 |
--------------------------------------------------------------------------------
/scanbooth_web/test/integration/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/test/integration/.gitkeep
--------------------------------------------------------------------------------
/scanbooth_web/test/performance/browsing_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 | require 'rails/performance_test_help'
3 |
4 | class BrowsingTest < ActionDispatch::PerformanceTest
5 | # Refer to the documentation for all available options
6 | # self.profile_options = { :runs => 5, :metrics => [:wall_time, :memory]
7 | # :output => 'tmp/performance', :formats => [:flat] }
8 |
9 | def test_homepage
10 | get '/'
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/scanbooth_web/test/test_helper.rb:
--------------------------------------------------------------------------------
1 | ENV["RAILS_ENV"] = "test"
2 | require File.expand_path('../../config/environment', __FILE__)
3 | require 'rails/test_help'
4 |
5 | class ActiveSupport::TestCase
6 | # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
7 | #
8 | # Note: You'll currently still have to declare fixtures explicitly in integration tests
9 | # -- they do not yet inherit this setting
10 | fixtures :all
11 |
12 | # Add more helper methods to be used by all tests here...
13 | end
14 |
--------------------------------------------------------------------------------
/scanbooth_web/test/unit/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/test/unit/.gitkeep
--------------------------------------------------------------------------------
/scanbooth_web/test/unit/helpers/admin_helper_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class AdminHelperTest < ActionView::TestCase
4 | end
5 |
--------------------------------------------------------------------------------
/scanbooth_web/test/unit/helpers/users_helper_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class UsersHelperTest < ActionView::TestCase
4 | end
5 |
--------------------------------------------------------------------------------
/scanbooth_web/test/unit/helpers/welcome_helper_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class WelcomeHelperTest < ActionView::TestCase
4 | end
5 |
--------------------------------------------------------------------------------
/scanbooth_web/test/unit/user_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class UserTest < ActiveSupport::TestCase
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/scanbooth_web/vendor/assets/javascripts/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/vendor/assets/javascripts/.gitkeep
--------------------------------------------------------------------------------
/scanbooth_web/vendor/assets/stylesheets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/vendor/assets/stylesheets/.gitkeep
--------------------------------------------------------------------------------
/scanbooth_web/vendor/plugins/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scanbooth_web/vendor/plugins/.gitkeep
--------------------------------------------------------------------------------
/scans/cleaned/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scans/cleaned/.gitkeep
--------------------------------------------------------------------------------
/scans/raw/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jherrm/scanbooth/fca18e57798e0b284f38a65740903ab3f531285f/scans/raw/.gitkeep
--------------------------------------------------------------------------------