Upgrade to Rails 5

Update config with rails app:update
Update schema.rb rails db:migrate
Add puma
Make jobs and models inherit from ApplicationJob and ApplicationRecord
Update acts_as_list to 0.9.7 in order to fix
"undefined method `sanitize_sql_hash_for_conditions'" error
Update web-console to 2.3.0 to fix a 500 internal server error
Replace before_filter with before_action
Add rails-controller-testing gem
Add prepend: :true to protect_from_forgery in ApplicationController to
avoid ActionController::InvalidAuthenticityToken exceptions
Remove activeuuid
Update formtastic to 3.1.5 to fix deprecation warnings and issues
with the Input class
Update ahoy_matey to 1.6.0
Update cancancan to 2.0.0 to fix issues with malformed sql queries
Fix program spec
Fix issue with the picture being nil in admin/Organizations#new and #edit
and Organizations#show
Fix ActiveRecord::Base.raise_in_transactional_callbacks= deprecation
warning by removing an unnecessary line in application.rb
Fix failing versions specs
This commit is contained in:
AEtherC0r3 2017-09-05 22:23:34 +03:00 committed by Stella Rouzi
parent b4fcec07be
commit efaf07178f
89 changed files with 399 additions and 212 deletions

14
Gemfile
View file

@ -6,7 +6,10 @@ if Gem::Version.new(Bundler::VERSION) < Gem::Version.new('1.8.4')
end end
# as web framework # as web framework
gem 'rails', '~> 4.2.8' gem 'rails', '~> 5.0.5'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# enables serving assets in production and setting your logger to standard out # enables serving assets in production and setting your logger to standard out
# both of which are required to run an application on a twelve-factor provider # both of which are required to run an application on a twelve-factor provider
@ -31,7 +34,7 @@ gem 'carrierwave-bombshelter'
gem 'mini_magick' gem 'mini_magick'
# for internationalizing # for internationalizing
gem 'rails-i18n', '~> 4.0.0' gem 'rails-i18n', '~> 5.0.0'
# as authentification framework # as authentification framework
gem 'devise' gem 'devise'
@ -48,7 +51,7 @@ gem 'omniauth-openid'
gem 'recaptcha', require: 'recaptcha/rails' gem 'recaptcha', require: 'recaptcha/rails'
# as authorization framework # as authorization framework
gem 'cancancan' gem 'cancancan', '~> 2.0'
# for roles # for roles
gem 'rolify' gem 'rolify'
@ -76,7 +79,7 @@ gem 'uglifier', '>= 1.3.0'
gem 'autoprefixer-rails' gem 'autoprefixer-rails'
gem 'bootstrap-sass', '~> 3.3.4.1' gem 'bootstrap-sass', '~> 3.3.4.1'
gem 'cocoon' gem 'cocoon'
gem 'formtastic', '~> 3.1.1' gem 'formtastic', '~> 3.1.5'
gem 'formtastic-bootstrap' gem 'formtastic-bootstrap'
# as the JavaScript library # as the JavaScript library
@ -156,7 +159,6 @@ gem 'redcarpet'
gem 'rdoc-generator-fivefish' gem 'rdoc-generator-fivefish'
# for visitor tracking # for visitor tracking
gem 'activeuuid'
gem 'ahoy_matey' gem 'ahoy_matey'
gem 'piwik_analytics', '~> 1.0.1' gem 'piwik_analytics', '~> 1.0.1'
@ -253,6 +255,8 @@ group :test do
gem 'stripe-ruby-mock' gem 'stripe-ruby-mock'
# For validating JSON schemas # For validating JSON schemas
gem 'json-schema' gem 'json-schema'
# For using 'assigns' in tests
gem 'rails-controller-testing'
end end
group :development, :test do group :development, :test do

View file

@ -12,62 +12,65 @@ GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
remote: https://rails-assets.org/ remote: https://rails-assets.org/
specs: specs:
actionmailer (4.2.9) actioncable (5.0.5)
actionpack (= 4.2.9) actionpack (= 5.0.5)
actionview (= 4.2.9) nio4r (>= 1.2, < 3.0)
activejob (= 4.2.9) websocket-driver (~> 0.6.1)
actionmailer (5.0.5)
actionpack (= 5.0.5)
actionview (= 5.0.5)
activejob (= 5.0.5)
mail (~> 2.5, >= 2.5.4) mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 2.0)
actionpack (4.2.9) actionpack (5.0.5)
actionview (= 4.2.9) actionview (= 5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
rack (~> 1.6) rack (~> 2.0)
rack-test (~> 0.6.2) rack-test (~> 0.6.3)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2) rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (4.2.9) actionview (5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
builder (~> 3.1) builder (~> 3.1)
erubis (~> 2.7.0) erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3) rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_model_serializers (0.9.4) active_model_serializers (0.9.4)
activemodel (>= 3.2) activemodel (>= 3.2)
activejob (4.2.9) activejob (5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
globalid (>= 0.3.0) globalid (>= 0.3.6)
activemodel (4.2.9) activemodel (5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
builder (~> 3.1) activerecord (5.0.5)
activerecord (4.2.9) activemodel (= 5.0.5)
activemodel (= 4.2.9) activesupport (= 5.0.5)
activesupport (= 4.2.9) arel (~> 7.0)
arel (~> 6.0) activesupport (5.0.5)
activesupport (4.2.9) concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7) i18n (~> 0.7)
minitest (~> 5.1) minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1) tzinfo (~> 1.1)
activeuuid (0.6.1)
activerecord (>= 3.1)
uuidtools
acts_as_commentable_with_threading (1.2.0) acts_as_commentable_with_threading (1.2.0)
activerecord (>= 3.0) activerecord (>= 3.0)
activesupport (>= 3.0) activesupport (>= 3.0)
awesome_nested_set (>= 2.0) awesome_nested_set (>= 2.0)
acts_as_list (0.4.0) acts_as_list (0.9.7)
activerecord (>= 3.0) activerecord (>= 3.0)
addressable (2.5.1) addressable (2.5.1)
public_suffix (~> 2.0, >= 2.0.2) public_suffix (~> 2.0, >= 2.0.2)
ahoy_matey (1.0.0) ahoy_matey (1.6.0)
addressable addressable
browser (>= 0.4.0) browser (~> 2.0)
geocoder geocoder
referer-parser rack-attack (< 6)
railties
referer-parser (>= 0.3.0)
request_store request_store
safely_block (>= 0.1.1)
user_agent_parser user_agent_parser
uuidtools uuidtools
arel (6.0.4) arel (7.1.4)
ast (2.3.0) ast (2.3.0)
autoprefixer-rails (7.1.1) autoprefixer-rails (7.1.1)
execjs execjs
@ -86,10 +89,10 @@ GEM
bootstrap-switch-rails (3.0.2) bootstrap-switch-rails (3.0.2)
bootstrap3-datetimepicker-rails (3.0.3) bootstrap3-datetimepicker-rails (3.0.3)
momentjs-rails (>= 2.8.1) momentjs-rails (>= 2.8.1)
browser (0.6.0) browser (2.5.1)
builder (3.2.3) builder (3.2.3)
byebug (9.0.6) byebug (9.0.6)
cancancan (1.13.1) cancancan (2.0.0)
capybara (2.6.2) capybara (2.6.2)
addressable addressable
mime-types (>= 1.16) mime-types (>= 1.16)
@ -144,7 +147,7 @@ GEM
daemons (1.1.9) daemons (1.1.9)
dante (0.2.0) dante (0.2.0)
database_cleaner (1.3.0) database_cleaner (1.3.0)
debug_inspector (0.0.2) debug_inspector (0.0.3)
delayed_job (4.1.3) delayed_job (4.1.3)
activesupport (>= 3.0, < 5.2) activesupport (>= 3.0, < 5.2)
delayed_job_active_record (4.1.2) delayed_job_active_record (4.1.2)
@ -166,6 +169,7 @@ GEM
dotenv-rails (2.2.1) dotenv-rails (2.2.1)
dotenv (= 2.2.1) dotenv (= 2.2.1)
railties (>= 3.2, < 5.2) railties (>= 3.2, < 5.2)
errbase (0.0.3)
erubis (2.7.0) erubis (2.7.0)
execjs (2.6.0) execjs (2.6.0)
factory_girl (4.5.0) factory_girl (4.5.0)
@ -184,11 +188,11 @@ GEM
font-awesome-rails (4.7.0.2) font-awesome-rails (4.7.0.2)
railties (>= 3.2, < 5.2) railties (>= 3.2, < 5.2)
formatador (0.2.5) formatador (0.2.5)
formtastic (3.1.3) formtastic (3.1.5)
actionpack (>= 3.2.13) actionpack (>= 3.2.13)
formtastic-bootstrap (3.1.1) formtastic-bootstrap (3.1.1)
formtastic (>= 3.0) formtastic (>= 3.0)
geocoder (1.2.2) geocoder (1.4.4)
globalid (0.4.0) globalid (0.4.0)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
gravtastic (3.2.6) gravtastic (3.2.6)
@ -291,6 +295,7 @@ GEM
mysql2 (0.4.9) mysql2 (0.4.9)
nenv (0.3.0) nenv (0.3.0)
netrc (0.11.0) netrc (0.11.0)
nio4r (2.1.0)
nokogiri (1.8.1) nokogiri (1.8.1)
mini_portile2 (~> 2.3.0) mini_portile2 (~> 2.3.0)
notiffany (0.1.1) notiffany (0.1.1)
@ -354,23 +359,27 @@ GEM
method_source (~> 0.8.1) method_source (~> 0.8.1)
slop (~> 3.4) slop (~> 3.4)
public_suffix (2.0.5) public_suffix (2.0.5)
rack (1.6.8) puma (3.10.0)
rack (2.0.3)
rack-attack (5.0.1)
rack
rack-openid (1.3.1) rack-openid (1.3.1)
rack (>= 1.1.0) rack (>= 1.1.0)
ruby-openid (>= 2.1.8) ruby-openid (>= 2.1.8)
rack-test (0.6.3) rack-test (0.6.3)
rack (>= 1.0) rack (>= 1.0)
rails (4.2.9) rails (5.0.5)
actionmailer (= 4.2.9) actioncable (= 5.0.5)
actionpack (= 4.2.9) actionmailer (= 5.0.5)
actionview (= 4.2.9) actionpack (= 5.0.5)
activejob (= 4.2.9) actionview (= 5.0.5)
activemodel (= 4.2.9) activejob (= 5.0.5)
activerecord (= 4.2.9) activemodel (= 5.0.5)
activesupport (= 4.2.9) activerecord (= 5.0.5)
bundler (>= 1.3.0, < 2.0) activesupport (= 5.0.5)
railties (= 4.2.9) bundler (>= 1.3.0)
sprockets-rails railties (= 5.0.5)
sprockets-rails (>= 2.0.0)
rails-assets-bootstrap (3.3.6) rails-assets-bootstrap (3.3.6)
rails-assets-jquery (>= 1.9.1, < 3) rails-assets-jquery (>= 1.9.1, < 3)
rails-assets-bootstrap-markdown (2.10.0) rails-assets-bootstrap-markdown (2.10.0)
@ -388,25 +397,27 @@ GEM
rails-assets-to-markdown (1.3.0) rails-assets-to-markdown (1.3.0)
rails-assets-trianglify (0.4.0) rails-assets-trianglify (0.4.0)
rails-assets-waypoints (4.0.0) rails-assets-waypoints (4.0.0)
rails-deprecated_sanitizer (1.0.3) rails-controller-testing (1.0.2)
activesupport (>= 4.2.0.alpha) actionpack (~> 5.x, >= 5.0.1)
rails-dom-testing (1.0.8) actionview (~> 5.x, >= 5.0.1)
activesupport (>= 4.2.0.beta, < 5.0) activesupport (~> 5.x)
nokogiri (~> 1.6) rails-dom-testing (2.0.3)
rails-deprecated_sanitizer (>= 1.0.1) activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.0.3) rails-html-sanitizer (1.0.3)
loofah (~> 2.0) loofah (~> 2.0)
rails-i18n (4.0.8) rails-i18n (5.0.4)
i18n (~> 0.7) i18n (~> 0.7)
railties (~> 4.0) railties (~> 5.0)
rails_12factor (0.0.3) rails_12factor (0.0.3)
rails_serve_static_assets rails_serve_static_assets
rails_stdout_logging rails_stdout_logging
rails_serve_static_assets (0.0.4) rails_serve_static_assets (0.0.4)
rails_stdout_logging (0.0.3) rails_stdout_logging (0.0.3)
railties (4.2.9) railties (5.0.5)
actionpack (= 4.2.9) actionpack (= 5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
method_source
rake (>= 0.8.7) rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0) thor (>= 0.18.1, < 2.0)
rainbow (2.2.2) rainbow (2.2.2)
@ -424,7 +435,7 @@ GEM
recaptcha (4.6.2) recaptcha (4.6.2)
json json
redcarpet (3.2.3) redcarpet (3.2.3)
referer-parser (0.2.1) referer-parser (0.3.0)
request_store (1.1.0) request_store (1.1.0)
responders (2.4.0) responders (2.4.0)
actionpack (>= 4.2.0, < 5.3) actionpack (>= 4.2.0, < 5.3)
@ -474,6 +485,8 @@ GEM
ruby_dep (1.5.0) ruby_dep (1.5.0)
rubyzip (1.2.1) rubyzip (1.2.1)
safe_yaml (1.0.4) safe_yaml (1.0.4)
safely_block (0.2.0)
errbase
sass (3.2.19) sass (3.2.19)
sass-rails (5.0.6) sass-rails (5.0.6)
railties (>= 4.0.0, < 6) railties (>= 4.0.0, < 6)
@ -500,10 +513,10 @@ GEM
sprockets (3.7.1) sprockets (3.7.1)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
rack (> 1, < 3) rack (> 1, < 3)
sprockets-rails (2.3.3) sprockets-rails (3.2.1)
actionpack (>= 3.0) actionpack (>= 4.0)
activesupport (>= 3.0) activesupport (>= 4.0)
sprockets (>= 2.8, < 4.0) sprockets (>= 3.0.0)
sqlite3 (1.3.9) sqlite3 (1.3.9)
stripe (1.43.0) stripe (1.43.0)
rest-client (~> 1.4) rest-client (~> 1.4)
@ -534,11 +547,11 @@ GEM
unicode_utils (1.4.0) unicode_utils (1.4.0)
unobtrusive_flash (3.1.0) unobtrusive_flash (3.1.0)
railties railties
user_agent_parser (2.1.5) user_agent_parser (2.4.0)
uuidtools (2.1.5) uuidtools (2.1.5)
warden (1.2.4) warden (1.2.4)
rack (>= 1.0) rack (>= 1.0)
web-console (2.2.1) web-console (2.3.0)
activemodel (>= 4.0) activemodel (>= 4.0)
binding_of_caller (>= 0.7.2) binding_of_caller (>= 0.7.2)
railties (>= 4.0) railties (>= 4.0)
@ -562,7 +575,6 @@ PLATFORMS
DEPENDENCIES DEPENDENCIES
active_model_serializers active_model_serializers
activeuuid
acts_as_commentable_with_threading acts_as_commentable_with_threading
acts_as_list acts_as_list
ahoy_matey ahoy_matey
@ -574,7 +586,7 @@ DEPENDENCIES
bootstrap-switch-rails (~> 3.0.0) bootstrap-switch-rails (~> 3.0.0)
bootstrap3-datetimepicker-rails (~> 3.0.2) bootstrap3-datetimepicker-rails (~> 3.0.2)
byebug byebug
cancancan cancancan (~> 2.0)
capybara capybara
carrierwave carrierwave
carrierwave-bombshelter carrierwave-bombshelter
@ -594,7 +606,7 @@ DEPENDENCIES
faker faker
feature feature
font-awesome-rails font-awesome-rails
formtastic (~> 3.1.1) formtastic (~> 3.1.5)
formtastic-bootstrap formtastic-bootstrap
gravtastic gravtastic
guard-rspec guard-rspec
@ -625,7 +637,8 @@ DEPENDENCIES
poltergeist poltergeist
prawn-qrcode (~> 0.2.2.1) prawn-qrcode (~> 0.2.2.1)
prawn_rails prawn_rails
rails (~> 4.2.8) puma (~> 3.0)
rails (~> 5.0.5)
rails-assets-bootstrap-markdown! rails-assets-bootstrap-markdown!
rails-assets-date.format! rails-assets-date.format!
rails-assets-holderjs! rails-assets-holderjs!
@ -637,7 +650,8 @@ DEPENDENCIES
rails-assets-to-markdown! rails-assets-to-markdown!
rails-assets-trianglify! rails-assets-trianglify!
rails-assets-waypoints! rails-assets-waypoints!
rails-i18n (~> 4.0.0) rails-controller-testing
rails-i18n (~> 5.0.0)
rails_12factor rails_12factor
rdoc-generator-fivefish rdoc-generator-fivefish
recaptcha recaptcha

View file

@ -1,6 +1,6 @@
module Admin module Admin
class BaseController < ApplicationController class BaseController < ApplicationController
before_filter :verify_user_admin before_action :verify_user_admin
private private

View file

@ -2,7 +2,7 @@ module Admin
class RegistrationsController < Admin::BaseController class RegistrationsController < Admin::BaseController
load_and_authorize_resource :conference, find_by: :short_title load_and_authorize_resource :conference, find_by: :short_title
load_and_authorize_resource :registration, through: :conference load_and_authorize_resource :registration, through: :conference
before_filter :set_user, except: [:index] before_action :set_user, except: [:index]
def index def index
authorize! :show, Registration.new(conference_id: @conference.id) authorize! :show, Registration.new(conference_id: @conference.id)

View file

@ -1,10 +1,10 @@
class ApplicationController < ActionController::Base class ApplicationController < ActionController::Base
before_filter :set_paper_trail_whodunnit before_action :set_paper_trail_whodunnit
include ApplicationHelper include ApplicationHelper
add_flash_types :error add_flash_types :error
protect_from_forgery with: :exception protect_from_forgery with: :exception, prepend: true
before_filter :get_conferences before_action :get_conferences
before_filter :store_location before_action :store_location
# Ensure every controller authorizes resource or skips authorization (skip_authorization_check) # Ensure every controller authorizes resource or skips authorization (skip_authorization_check)
check_authorization unless: :devise_controller? check_authorization unless: :devise_controller?

View file

@ -1,5 +1,5 @@
class ConferenceRegistrationsController < ApplicationController class ConferenceRegistrationsController < ApplicationController
before_filter :authenticate_user!, except: [:new, :create] before_action :authenticate_user!, except: [:new, :create]
load_resource :conference, find_by: :short_title load_resource :conference, find_by: :short_title
authorize_resource :conference_registrations, class: Registration, except: [:new, :create] authorize_resource :conference_registrations, class: Registration, except: [:new, :create]
before_action :set_registration, only: [:edit, :update, :destroy, :show] before_action :set_registration, only: [:edit, :update, :destroy, :show]

View file

@ -1,5 +1,5 @@
class SubscriptionsController < ApplicationController class SubscriptionsController < ApplicationController
before_filter :authenticate_user! before_action :authenticate_user!
load_resource :conference, find_by: :short_title load_resource :conference, find_by: :short_title
load_and_authorize_resource only: [:create, :destroy], through: :conference load_and_authorize_resource only: [:create, :destroy], through: :conference

View file

@ -1,5 +1,5 @@
class TicketPurchasesController < ApplicationController class TicketPurchasesController < ApplicationController
before_filter :authenticate_user! before_action :authenticate_user!
load_resource :conference, find_by: :short_title load_resource :conference, find_by: :short_title
authorize_resource :conference_registrations, class: Registration authorize_resource :conference_registrations, class: Registration
authorize_resource authorize_resource

View file

@ -1,9 +1,9 @@
class TicketsController < ApplicationController class TicketsController < ApplicationController
before_filter :authenticate_user! before_action :authenticate_user!
load_resource :conference, find_by: :short_title load_resource :conference, find_by: :short_title
load_resource :ticket, through: :conference load_resource :ticket, through: :conference
authorize_resource :conference_registrations, class: Registration authorize_resource :conference_registrations, class: Registration
before_filter :check_load_resource, only: :index before_action :check_load_resource, only: :index
def index; end def index; end

View file

@ -0,0 +1,2 @@
class ApplicationJob < ActiveJob::Base
end

View file

@ -1,4 +1,4 @@
class ConferenceCfpUpdateMailJob < ActiveJob::Base class ConferenceCfpUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class ConferenceDateUpdateMailJob < ActiveJob::Base class ConferenceDateUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class ConferenceRegistrationDateUpdateMailJob < ActiveJob::Base class ConferenceRegistrationDateUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class ConferenceScheduleUpdateMailJob < ActiveJob::Base class ConferenceScheduleUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class ConferenceVenueUpdateMailJob < ActiveJob::Base class ConferenceVenueUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class EventCommentMailJob < ActiveJob::Base class EventCommentMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(comment) def perform(comment)

View file

@ -1,5 +1,5 @@
module Ahoy module Ahoy
class Event < ActiveRecord::Base class Event < ApplicationRecord
self.table_name = 'ahoy_events' self.table_name = 'ahoy_events'
belongs_to :visit belongs_to :visit

View file

@ -1,4 +1,4 @@
class Answer < ActiveRecord::Base class Answer < ApplicationRecord
has_many :qanswers has_many :qanswers
has_many :questions, through: :qanswers has_many :questions, through: :qanswers

View file

@ -0,0 +1,3 @@
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end

View file

@ -1,4 +1,4 @@
class Booth < ActiveRecord::Base class Booth < ApplicationRecord
include ActiveRecord::Transitions include ActiveRecord::Transitions
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class BoothRequest < ActiveRecord::Base class BoothRequest < ApplicationRecord
belongs_to :booth belongs_to :booth
belongs_to :user belongs_to :user

View file

@ -1,4 +1,4 @@
class Campaign < ActiveRecord::Base class Campaign < ApplicationRecord
validates :name, :utm_campaign, presence: true validates :name, :utm_campaign, presence: true
has_many :targets, dependent: :nullify has_many :targets, dependent: :nullify

View file

@ -1,6 +1,6 @@
# cannot delete program if there are events submitted # cannot delete program if there are events submitted
class Cfp < ActiveRecord::Base class Cfp < ApplicationRecord
TYPES = %w(events booths tracks).freeze TYPES = %w(events booths tracks).freeze
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Comment < ActiveRecord::Base class Comment < ApplicationRecord
acts_as_nested_set scope: %i(commentable_id commentable_type) acts_as_nested_set scope: %i(commentable_id commentable_type)
validates :body, presence: true validates :body, presence: true
validates :user, presence: true validates :user, presence: true

View file

@ -1,4 +1,4 @@
class Commercial < ActiveRecord::Base class Commercial < ApplicationRecord
require 'oembed' require 'oembed'
belongs_to :commercialable, polymorphic: true belongs_to :commercialable, polymorphic: true

View file

@ -1,4 +1,4 @@
class Conference < ActiveRecord::Base class Conference < ApplicationRecord
include RevisionCount include RevisionCount
require 'uri' require 'uri'
serialize :events_per_week, Hash serialize :events_per_week, Hash

View file

@ -1,4 +1,4 @@
class Contact < ActiveRecord::Base class Contact < ApplicationRecord
has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id }
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class DifficultyLevel < ActiveRecord::Base class DifficultyLevel < ApplicationRecord
belongs_to :program belongs_to :program
has_many :events, dependent: :nullify has_many :events, dependent: :nullify

View file

@ -1,4 +1,4 @@
class EmailSettings < ActiveRecord::Base class EmailSettings < ApplicationRecord
belongs_to :conference belongs_to :conference
has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Event < ActiveRecord::Base class Event < ApplicationRecord
include ActiveRecord::Transitions include ActiveRecord::Transitions
include RevisionCount include RevisionCount
has_paper_trail on: [:create, :update], ignore: [:updated_at, :guid, :week], meta: { conference_id: :conference_id } has_paper_trail on: [:create, :update], ignore: [:updated_at, :guid, :week], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class EventSchedule < ActiveRecord::Base class EventSchedule < ApplicationRecord
belongs_to :schedule belongs_to :schedule
belongs_to :event belongs_to :event
belongs_to :room belongs_to :room

View file

@ -1,4 +1,4 @@
class EventType < ActiveRecord::Base class EventType < ApplicationRecord
belongs_to :program belongs_to :program
has_many :events, dependent: :restrict_with_error has_many :events, dependent: :restrict_with_error

View file

@ -1,4 +1,4 @@
class EventUser < ActiveRecord::Base class EventUser < ApplicationRecord
# TODO: Do we need these roles? # TODO: Do we need these roles?
ROLES = [%w[Speaker speaker], %w[Submitter submitter], %w[Moderator moderator]] ROLES = [%w[Speaker speaker], %w[Submitter submitter], %w[Moderator moderator]]

View file

@ -1,4 +1,4 @@
class EventsRegistration < ActiveRecord::Base class EventsRegistration < ApplicationRecord
belongs_to :registration belongs_to :registration
belongs_to :event belongs_to :event

View file

@ -1,4 +1,4 @@
class Lodging < ActiveRecord::Base class Lodging < ApplicationRecord
belongs_to :conference belongs_to :conference
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Openid < ActiveRecord::Base class Openid < ApplicationRecord
belongs_to :user belongs_to :user
validates :provider, :uid, presence: true validates :provider, :uid, presence: true

View file

@ -1,4 +1,4 @@
class Organization < ActiveRecord::Base class Organization < ApplicationRecord
resourcify :roles, dependent: :delete_all resourcify :roles, dependent: :delete_all
has_paper_trail has_paper_trail

View file

@ -1,4 +1,4 @@
class Payment < ActiveRecord::Base class Payment < ApplicationRecord
has_many :ticket_purchases has_many :ticket_purchases
belongs_to :user belongs_to :user
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class PhysicalTicket < ActiveRecord::Base class PhysicalTicket < ApplicationRecord
belongs_to :ticket_purchase belongs_to :ticket_purchase
has_one :ticket, through: :ticket_purchase has_one :ticket, through: :ticket_purchase
has_one :conference, through: :ticket_purchase has_one :conference, through: :ticket_purchase

View file

@ -1,6 +1,6 @@
# cannot delete program if there are events submitted # cannot delete program if there are events submitted
class Program < ActiveRecord::Base class Program < ApplicationRecord
has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id }
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class Qanswer < ActiveRecord::Base class Qanswer < ApplicationRecord
belongs_to :question belongs_to :question
belongs_to :answer, dependent: :delete belongs_to :answer, dependent: :delete

View file

@ -1,4 +1,4 @@
class Question < ActiveRecord::Base class Question < ApplicationRecord
belongs_to :question_type belongs_to :question_type
has_and_belongs_to_many :conferences has_and_belongs_to_many :conferences

View file

@ -1,3 +1,3 @@
class QuestionType < ActiveRecord::Base class QuestionType < ApplicationRecord
has_many :questions has_many :questions
end end

View file

@ -1,4 +1,4 @@
class Registration < ActiveRecord::Base class Registration < ApplicationRecord
belongs_to :user belongs_to :user
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class RegistrationPeriod < ActiveRecord::Base class RegistrationPeriod < ApplicationRecord
belongs_to :conference belongs_to :conference
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Resource < ActiveRecord::Base class Resource < ApplicationRecord
belongs_to :conference belongs_to :conference
validates :name, :used, :quantity, presence: true validates :name, :used, :quantity, presence: true
validates :used, :quantity, numericality: { greater_than_or_equal_to: 0, only_integer: true } validates :used, :quantity, numericality: { greater_than_or_equal_to: 0, only_integer: true }

View file

@ -1,4 +1,4 @@
class Role < ActiveRecord::Base class Role < ApplicationRecord
belongs_to :resource, polymorphic: true belongs_to :resource, polymorphic: true
has_many :users_roles has_many :users_roles
has_many :users, through: :users_roles has_many :users, through: :users_roles

View file

@ -1,4 +1,4 @@
class Room < ActiveRecord::Base class Room < ApplicationRecord
include RevisionCount include RevisionCount
belongs_to :venue belongs_to :venue
has_many :event_schedules, dependent: :destroy has_many :event_schedules, dependent: :destroy

View file

@ -1,4 +1,4 @@
class Schedule < ActiveRecord::Base class Schedule < ApplicationRecord
belongs_to :program belongs_to :program
belongs_to :track belongs_to :track
has_many :event_schedules, dependent: :destroy has_many :event_schedules, dependent: :destroy

View file

@ -1,4 +1,4 @@
class Splashpage < ActiveRecord::Base class Splashpage < ApplicationRecord
belongs_to :conference belongs_to :conference
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Sponsor < ActiveRecord::Base class Sponsor < ApplicationRecord
belongs_to :sponsorship_level belongs_to :sponsorship_level
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class SponsorshipLevel < ActiveRecord::Base class SponsorshipLevel < ApplicationRecord
validates :title, presence: true validates :title, presence: true
belongs_to :conference belongs_to :conference
acts_as_list scope: :conference acts_as_list scope: :conference

View file

@ -1,4 +1,4 @@
class Subscription < ActiveRecord::Base class Subscription < ApplicationRecord
belongs_to :conference belongs_to :conference
belongs_to :user belongs_to :user

View file

@ -1,4 +1,4 @@
class Target < ActiveRecord::Base class Target < ApplicationRecord
include ActionView::Helpers::TextHelper include ActionView::Helpers::TextHelper
default_scope { order('due_date ASC') } default_scope { order('due_date ASC') }

View file

@ -1,4 +1,4 @@
class Ticket < ActiveRecord::Base class Ticket < ApplicationRecord
belongs_to :conference belongs_to :conference
has_many :ticket_purchases, dependent: :destroy has_many :ticket_purchases, dependent: :destroy
has_many :buyers, -> { distinct }, through: :ticket_purchases, source: :user has_many :buyers, -> { distinct }, through: :ticket_purchases, source: :user

View file

@ -1,4 +1,4 @@
class TicketPurchase < ActiveRecord::Base class TicketPurchase < ApplicationRecord
belongs_to :ticket belongs_to :ticket
belongs_to :user belongs_to :user
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class TicketScanning < ActiveRecord::Base class TicketScanning < ApplicationRecord
belongs_to :physical_ticket belongs_to :physical_ticket
before_create :mark_user_present before_create :mark_user_present

View file

@ -1,4 +1,4 @@
class Track < ActiveRecord::Base class Track < ApplicationRecord
include ActiveRecord::Transitions include ActiveRecord::Transitions
include RevisionCount include RevisionCount

View file

@ -4,7 +4,7 @@ end
class UserDisabled < StandardError class UserDisabled < StandardError
end end
class User < ActiveRecord::Base class User < ApplicationRecord
rolify rolify
has_many :physical_tickets, through: :ticket_purchases do has_many :physical_tickets, through: :ticket_purchases do
def by_conference(conference) def by_conference(conference)

View file

@ -1,4 +1,4 @@
class UsersRole < ActiveRecord::Base class UsersRole < ApplicationRecord
belongs_to :role belongs_to :role
belongs_to :user belongs_to :user

View file

@ -1,4 +1,4 @@
class Vchoice < ActiveRecord::Base class Vchoice < ApplicationRecord
belongs_to :vday belongs_to :vday
belongs_to :vposition belongs_to :vposition

View file

@ -1,4 +1,4 @@
class Vday < ActiveRecord::Base class Vday < ApplicationRecord
belongs_to :conference belongs_to :conference
has_many :vchoices has_many :vchoices

View file

@ -1,4 +1,4 @@
class Venue < ActiveRecord::Base class Venue < ApplicationRecord
belongs_to :conference belongs_to :conference
has_one :commercial, as: :commercialable, dependent: :destroy has_one :commercial, as: :commercialable, dependent: :destroy
has_many :rooms, dependent: :destroy has_many :rooms, dependent: :destroy

View file

@ -1,4 +1,4 @@
class Visit < ActiveRecord::Base class Visit < ApplicationRecord
has_many :ahoy_events, class_name: 'Ahoy::Event' has_many :ahoy_events, class_name: 'Ahoy::Event'
belongs_to :user belongs_to :user
end end

View file

@ -1,4 +1,4 @@
class Vote < ActiveRecord::Base class Vote < ApplicationRecord
belongs_to :user belongs_to :user
belongs_to :event belongs_to :event

View file

@ -1,4 +1,4 @@
class Vposition < ActiveRecord::Base class Vposition < ApplicationRecord
belongs_to :conference belongs_to :conference
has_many :vchoices has_many :vchoices

View file

@ -3,7 +3,7 @@
= f.input :name, as: :string, required: true = f.input :name, as: :string, required: true
= f.input :description, as: :text, input_html: { rows: 10 }, placeholder: 'Decribe about your organization..' = f.input :description, as: :text, input_html: { rows: 10 }, placeholder: 'Decribe about your organization..'
= image_tag f.object.picture.thumb.url if f.object.picture? = image_tag f.object.picture.thumb.url if f.object.picture?
- if @organization.picture - if @organization.picture?
= image_tag(@organization.picture.thumb.url, width: '20%') = image_tag(@organization.picture.thumb.url, width: '20%')
= f.input :picture = f.input :picture
%p.text-right %p.text-right

View file

@ -8,7 +8,7 @@
- @organizations.each do |organization| - @organizations.each do |organization|
.col-md-4 .col-md-4
.thumbnail .thumbnail
= image_tag(organization.picture.thumb.url, width: '20%') = image_tag(organization.picture.thumb.url, width: '20%') if organization.picture?
.caption .caption
%h4 %h4
= organization.name = organization.name

3
bin/bundle Executable file
View file

@ -0,0 +1,3 @@
#!/usr/bin/env ruby.ruby2.4
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
load Gem.bin_path('bundler', 'bundle')

4
bin/rake Executable file
View file

@ -0,0 +1,4 @@
#!/usr/bin/env ruby.ruby2.4
require_relative '../config/boot'
require 'rake'
Rake.application.run

34
bin/setup Executable file
View file

@ -0,0 +1,34 @@
#!/usr/bin/env ruby.ruby2.4
require 'pathname'
require 'fileutils'
include FileUtils
# path to your application root.
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
def system!(*args)
system(*args) || abort("\n== Command #{args} failed ==")
end
chdir APP_ROOT do
# This script is a starting point to setup your application.
# Add necessary setup steps to this file.
puts '== Installing dependencies =='
system! 'gem install bundler --conservative'
system('bundle check') || system!('bundle install')
# puts "\n== Copying sample files =="
# unless File.exist?('config/database.yml')
# cp 'config/database.yml.sample', 'config/database.yml'
# end
puts "\n== Preparing database =="
system! 'bin/rails db:setup'
puts "\n== Removing old logs and tempfiles =="
system! 'bin/rails log:clear tmp:clear'
puts "\n== Restarting application server =="
system! 'bin/rails restart'
end

29
bin/update Executable file
View file

@ -0,0 +1,29 @@
#!/usr/bin/env ruby.ruby2.4
require 'pathname'
require 'fileutils'
include FileUtils
# path to your application root.
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
def system!(*args)
system(*args) || abort("\n== Command #{args} failed ==")
end
chdir APP_ROOT do
# This script is a way to update your development environment automatically.
# Add necessary update steps to this file.
puts '== Installing dependencies =='
system! 'gem install bundler --conservative'
system('bundle check') || system!('bundle install')
puts "\n== Updating database =="
system! 'bin/rails db:migrate'
puts "\n== Removing old logs and tempfiles =="
system! 'bin/rails log:clear tmp:clear'
puts "\n== Restarting application server =="
system! 'bin/rails restart'
end

View file

@ -60,9 +60,6 @@ module Osem
# Version of your assets, change this if you want to expire all your assets # Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0' config.assets.version = '1.0'
# Errors raised within `after_rollback`/`after_commit` propagate normally
# like in other Active Record callbacks.
config.active_record.raise_in_transactional_callbacks = true
config.active_job.queue_adapter = :delayed_job config.active_job.queue_adapter = :delayed_job
end end
end end

View file

@ -1,4 +1,3 @@
# Set up gems listed in the Gemfile. ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) require 'bundler/setup' # Set up gems listed in the Gemfile.

9
config/cable.yml Normal file
View file

@ -0,0 +1,9 @@
development:
adapter: async
test:
adapter: async
production:
adapter: redis
url: redis://localhost:6379/1

View file

@ -15,7 +15,7 @@ Osem::Application.configure do
config.eager_load = true config.eager_load = true
# Disable Rails's static asset server (Apache or nginx will already do this) # Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_files = false config.public_file_server.enabled = false
# Compress JavaScripts and CSS # Compress JavaScripts and CSS
config.assets.compress = true config.assets.compress = true

View file

@ -8,8 +8,8 @@ Osem::Application.configure do
config.cache_classes = true config.cache_classes = true
# Configure static asset server for tests with Cache-Control for performance # Configure static asset server for tests with Cache-Control for performance
config.serve_static_files = true config.public_file_server.enabled = true
config.static_cache_control = 'public, max-age=3600' config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
# Do not eager load code on boot. # Do not eager load code on boot.
config.eager_load = false config.eager_load = false

View file

@ -0,0 +1,6 @@
# Be sure to restart your server when you modify this file.
# ApplicationController.renderer.defaults.merge!(
# http_host: 'example.org',
# https: false
# )

View file

@ -0,0 +1,11 @@
# Be sure to restart your server when you modify this file.
# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = '1.0'
# Add additional assets to the asset load path
# Rails.application.config.assets.paths << Emoji.images_path
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
# Rails.application.config.assets.precompile += %w( search.js )

View file

@ -0,0 +1,5 @@
# Be sure to restart your server when you modify this file.
# Specify a serializer for the signed and encrypted cookie jars.
# Valid options are :json, :marshal, and :hybrid.
Rails.application.config.action_dispatch.cookies_serializer = :marshal

View file

@ -0,0 +1,4 @@
# Be sure to restart your server when you modify this file.
# Configure sensitive parameters which will be filtered from the log file.
Rails.application.config.filter_parameters += [:password]

View file

@ -1,15 +1,16 @@
# Be sure to restart your server when you modify this file. # Be sure to restart your server when you modify this file.
# Add new inflection rules using the following format # Add new inflection rules using the following format. Inflections
# (all these examples are active by default): # are locale specific, and you may define rules for as many different
# ActiveSupport::Inflector.inflections do |inflect| # locales as you wish. All of these examples are active by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.plural /^(ox)$/i, '\1en' # inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1' # inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people' # inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep ) # inflect.uncountable %w( fish sheep )
# end # end
#
# These inflection rules are supported but not enabled by default: # These inflection rules are supported but not enabled by default:
# ActiveSupport::Inflector.inflections do |inflect| # ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.acronym 'RESTful' # inflect.acronym 'RESTful'
# end # end

View file

@ -2,4 +2,3 @@
# Add new mime types for use in respond_to blocks: # Add new mime types for use in respond_to blocks:
# Mime::Type.register "text/richtext", :rtf # Mime::Type.register "text/richtext", :rtf
# Mime::Type.register_alias "text/html", :iphone

View file

@ -0,0 +1,25 @@
# Be sure to restart your server when you modify this file.
#
# This file contains migration options to ease your Rails 5.0 upgrade.
#
# Once upgraded flip defaults one by one to migrate to the new default.
#
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
Rails.application.config.action_controller.raise_on_unfiltered_parameters = true
# Enable per-form CSRF tokens. Previous versions had false.
Rails.application.config.action_controller.per_form_csrf_tokens = false
# Enable origin-checking CSRF mitigation. Previous versions had false.
Rails.application.config.action_controller.forgery_protection_origin_check = false
# Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`.
# Previous versions had false.
ActiveSupport.to_time_preserves_timezone = false
# Require `belongs_to` associations by default. Previous versions had false.
Rails.application.config.active_record.belongs_to_required_by_default = false
# Do not halt callback chains when a callback returns false. Previous versions had true.
ActiveSupport.halt_callback_chains_on_return_false = true

47
config/puma.rb Normal file
View file

@ -0,0 +1,47 @@
# Puma can serve each request in a thread from an internal thread pool.
# The `threads` method setting takes two numbers a minimum and maximum.
# Any libraries that use thread pools should be configured to match
# the maximum value specified for Puma. Default is set to 5 threads for minimum
# and maximum, this matches the default thread size of Active Record.
#
threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i
threads threads_count, threads_count
# Specifies the `port` that Puma will listen on to receive requests, default is 3000.
#
port ENV.fetch("PORT") { 3000 }
# Specifies the `environment` that Puma will run in.
#
environment ENV.fetch("RAILS_ENV") { "development" }
# Specifies the number of `workers` to boot in clustered mode.
# Workers are forked webserver processes. If using threads and workers together
# the concurrency of the application would be max `threads` * `workers`.
# Workers do not work on JRuby or Windows (both of which do not support
# processes).
#
# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
# Use the `preload_app!` method when specifying a `workers` number.
# This directive tells Puma to first boot the application and load code
# before forking the application. This takes advantage of Copy On Write
# process behavior so workers use less memory. If you use this option
# you need to make sure to reconnect any threads in the `on_worker_boot`
# block.
#
# preload_app!
# The code in the `on_worker_boot` will be called if you are using
# clustered mode by specifying a number of `workers`. After each worker
# process is booted this block will be run, if you are using `preload_app!`
# option you will want to use this block to reconnect to any threads
# or connections that may have been created at application boot, Ruby
# cannot share connections between processes.
#
# on_worker_boot do
# ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
# end
# Allow puma to be restarted by `rails restart` command.
plugin :tmp_restart

6
config/spring.rb Normal file
View file

@ -0,0 +1,6 @@
%w(
.ruby-version
.rbenv-vars
tmp/restart.txt
tmp/caching-dev.txt
).each { |path| Spring.watch(path) }

View file

@ -1,4 +1,3 @@
# encoding: UTF-8
# This file is auto-generated from the current state of the database. Instead # This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to # of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition. # incrementally modify your database, and then regenerate this schema definition.
@ -14,17 +13,16 @@
ActiveRecord::Schema.define(version: 20170924190528) do ActiveRecord::Schema.define(version: 20170924190528) do
create_table "ahoy_events", force: :cascade do |t| create_table "ahoy_events", force: :cascade do |t|
t.uuid "visit_id", limit: 16 t.binary "visit_id", limit: 16
t.integer "user_id" t.integer "user_id"
t.string "name" t.string "name"
t.text "properties" t.text "properties"
t.datetime "time" t.datetime "time"
t.index ["time"], name: "index_ahoy_events_on_time"
t.index ["user_id"], name: "index_ahoy_events_on_user_id"
t.index ["visit_id"], name: "index_ahoy_events_on_visit_id"
end end
add_index "ahoy_events", ["time"], name: "index_ahoy_events_on_time"
add_index "ahoy_events", ["user_id"], name: "index_ahoy_events_on_user_id"
add_index "ahoy_events", ["visit_id"], name: "index_ahoy_events_on_visit_id"
create_table "answers", force: :cascade do |t| create_table "answers", force: :cascade do |t|
t.string "title" t.string "title"
t.datetime "created_at" t.datetime "created_at"
@ -37,11 +35,10 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.string "role" t.string "role"
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.index ["booth_id"], name: "index_booth_requests_on_booth_id"
t.index ["user_id"], name: "index_booth_requests_on_user_id"
end end
add_index "booth_requests", ["booth_id"], name: "index_booth_requests_on_booth_id"
add_index "booth_requests", ["user_id"], name: "index_booth_requests_on_user_id"
create_table "booths", force: :cascade do |t| create_table "booths", force: :cascade do |t|
t.string "title" t.string "title"
t.text "description" t.text "description"
@ -89,12 +86,11 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.integer "parent_id" t.integer "parent_id"
t.integer "lft" t.integer "lft"
t.integer "rgt" t.integer "rgt"
t.index ["commentable_id"], name: "index_comments_on_commentable_id"
t.index ["commentable_type"], name: "index_comments_on_commentable_type"
t.index ["user_id"], name: "index_comments_on_user_id"
end end
add_index "comments", ["commentable_id"], name: "index_comments_on_commentable_id"
add_index "comments", ["commentable_type"], name: "index_comments_on_commentable_type"
add_index "comments", ["user_id"], name: "index_comments_on_user_id"
create_table "commercials", force: :cascade do |t| create_table "commercials", force: :cascade do |t|
t.string "commercial_id" t.string "commercial_id"
t.string "commercial_type" t.string "commercial_type"
@ -130,10 +126,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.integer "ticket_layout", default: 0 t.integer "ticket_layout", default: 0
t.string "custom_domain" t.string "custom_domain"
t.integer "booth_limit", default: 0 t.integer "booth_limit", default: 0
t.index ["organization_id"], name: "index_conferences_on_organization_id"
end end
add_index "conferences", ["organization_id"], name: "index_conferences_on_organization_id"
create_table "conferences_questions", id: false, force: :cascade do |t| create_table "conferences_questions", id: false, force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.integer "question_id" t.integer "question_id"
@ -164,10 +159,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.string "queue" t.string "queue"
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
t.index ["priority", "run_at"], name: "delayed_jobs_priority"
end end
add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority"
create_table "difficulty_levels", force: :cascade do |t| create_table "difficulty_levels", force: :cascade do |t|
t.string "title" t.string "title"
t.text "description" t.text "description"
@ -223,13 +217,12 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.datetime "start_time" t.datetime "start_time"
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.index ["event_id", "schedule_id"], name: "index_event_schedules_on_event_id_and_schedule_id", unique: true
t.index ["event_id"], name: "index_event_schedules_on_event_id"
t.index ["room_id"], name: "index_event_schedules_on_room_id"
t.index ["schedule_id"], name: "index_event_schedules_on_schedule_id"
end end
add_index "event_schedules", ["event_id", "schedule_id"], name: "index_event_schedules_on_event_id_and_schedule_id", unique: true
add_index "event_schedules", ["event_id"], name: "index_event_schedules_on_event_id"
add_index "event_schedules", ["room_id"], name: "index_event_schedules_on_room_id"
add_index "event_schedules", ["schedule_id"], name: "index_event_schedules_on_schedule_id"
create_table "event_types", force: :cascade do |t| create_table "event_types", force: :cascade do |t|
t.string "title", null: false t.string "title", null: false
t.integer "length", default: 30 t.integer "length", default: 30
@ -327,10 +320,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.string "token" t.string "token"
t.index ["token"], name: "index_physical_tickets_on_token", unique: true
end end
add_index "physical_tickets", ["token"], name: "index_physical_tickets_on_token", unique: true
create_table "programs", force: :cascade do |t| create_table "programs", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.integer "rating", default: 0 t.integer "rating", default: 0
@ -344,10 +336,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.datetime "voting_end_date" t.datetime "voting_end_date"
t.integer "selected_schedule_id" t.integer "selected_schedule_id"
t.integer "schedule_interval", default: 15, null: false t.integer "schedule_interval", default: 15, null: false
t.index ["selected_schedule_id"], name: "index_programs_on_selected_schedule_id"
end end
add_index "programs", ["selected_schedule_id"], name: "index_programs_on_selected_schedule_id"
create_table "qanswers", force: :cascade do |t| create_table "qanswers", force: :cascade do |t|
t.integer "question_id" t.integer "question_id"
t.integer "answer_id" t.integer "answer_id"
@ -416,11 +407,10 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.string "description" t.string "description"
t.integer "resource_id" t.integer "resource_id"
t.string "resource_type" t.string "resource_type"
t.index ["name", "resource_type", "resource_id"], name: "index_roles_on_name_and_resource_type_and_resource_id"
t.index ["name"], name: "index_roles_on_name"
end end
add_index "roles", ["name", "resource_type", "resource_id"], name: "index_roles_on_name_and_resource_type_and_resource_id"
add_index "roles", ["name"], name: "index_roles_on_name"
create_table "rooms", force: :cascade do |t| create_table "rooms", force: :cascade do |t|
t.string "guid", null: false t.string "guid", null: false
t.string "name", null: false t.string "name", null: false
@ -433,11 +423,10 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.integer "track_id" t.integer "track_id"
t.index ["program_id"], name: "index_schedules_on_program_id"
t.index ["track_id"], name: "index_schedules_on_track_id"
end end
add_index "schedules", ["program_id"], name: "index_schedules_on_program_id"
add_index "schedules", ["track_id"], name: "index_schedules_on_track_id"
create_table "splashpages", force: :cascade do |t| create_table "splashpages", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.boolean "public" t.boolean "public"
@ -540,12 +529,11 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.date "end_date" t.date "end_date"
t.text "relevance" t.text "relevance"
t.integer "selected_schedule_id" t.integer "selected_schedule_id"
t.index ["room_id"], name: "index_tracks_on_room_id"
t.index ["selected_schedule_id"], name: "index_tracks_on_selected_schedule_id"
t.index ["submitter_id"], name: "index_tracks_on_submitter_id"
end end
add_index "tracks", ["room_id"], name: "index_tracks_on_room_id"
add_index "tracks", ["selected_schedule_id"], name: "index_tracks_on_selected_schedule_id"
add_index "tracks", ["submitter_id"], name: "index_tracks_on_submitter_id"
create_table "users", force: :cascade do |t| create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false t.string "encrypted_password", default: "", null: false
@ -579,20 +567,18 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.boolean "is_admin", default: false t.boolean "is_admin", default: false
t.string "username" t.string "username"
t.boolean "is_disabled", default: false t.boolean "is_disabled", default: false
t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
t.index ["username"], name: "index_users_on_username", unique: true
end end
add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
add_index "users", ["email"], name: "index_users_on_email", unique: true
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
add_index "users", ["username"], name: "index_users_on_username", unique: true
create_table "users_roles", force: :cascade do |t| create_table "users_roles", force: :cascade do |t|
t.integer "role_id" t.integer "role_id"
t.integer "user_id" t.integer "user_id"
t.index ["user_id", "role_id"], name: "index_users_roles_on_user_id_and_role_id"
end end
add_index "users_roles", ["user_id", "role_id"], name: "index_users_roles_on_user_id_and_role_id"
create_table "vchoices", force: :cascade do |t| create_table "vchoices", force: :cascade do |t|
t.integer "vday_id" t.integer "vday_id"
t.integer "vposition_id" t.integer "vposition_id"
@ -633,12 +619,11 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.text "object_changes" t.text "object_changes"
t.datetime "created_at" t.datetime "created_at"
t.integer "conference_id" t.integer "conference_id"
t.index ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id"
end end
add_index "versions", ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id"
create_table "visits", force: :cascade do |t| create_table "visits", force: :cascade do |t|
t.uuid "visitor_id", limit: 16 t.binary "visitor_id", limit: 16
t.string "ip" t.string "ip"
t.text "user_agent" t.text "user_agent"
t.text "referrer" t.text "referrer"
@ -658,10 +643,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.string "utm_content" t.string "utm_content"
t.string "utm_campaign" t.string "utm_campaign"
t.datetime "started_at" t.datetime "started_at"
t.index ["user_id"], name: "index_visits_on_user_id"
end end
add_index "visits", ["user_id"], name: "index_visits_on_user_id"
create_table "votes", force: :cascade do |t| create_table "votes", force: :cascade do |t|
t.integer "event_id" t.integer "event_id"
t.integer "rating" t.integer "rating"

View file

@ -148,7 +148,7 @@ feature 'Version' do
visit admin_revision_history_path visit admin_revision_history_path
expect(page).to have_text("Someone (probably via the console) created new ticket Gold with ID #{ticket_id} in conference #{conference.short_title}") expect(page).to have_text("Someone (probably via the console) created new ticket Gold with ID #{ticket_id} in conference #{conference.short_title}")
expect(page).to have_text("Someone (probably via the console) updated price cents and description of ticket Gold with ID #{ticket_id} in conference #{conference.short_title}") expect(page).to have_text("Someone (probably via the console) updated description and price cents of ticket Gold with ID #{ticket_id} in conference #{conference.short_title}")
expect(page).to have_text("Someone (probably via the console) deleted ticket Gold with ID #{ticket_id} in conference #{conference.short_title}") expect(page).to have_text("Someone (probably via the console) deleted ticket Gold with ID #{ticket_id} in conference #{conference.short_title}")
end end
@ -343,7 +343,7 @@ feature 'Version' do
conference.email_settings.update_attributes(registration_subject: 'xxxxx', registration_body: 'yyyyy', accepted_subject: 'zzzzz') conference.email_settings.update_attributes(registration_subject: 'xxxxx', registration_body: 'yyyyy', accepted_subject: 'zzzzz')
visit admin_revision_history_path visit admin_revision_history_path
expect(page).to have_text("Someone (probably via the console) updated registration subject, registration body and accepted subject expect(page).to have_text("Someone (probably via the console) updated registration body, registration subject and accepted subject
of email settings in conference #{conference.short_title}") of email settings in conference #{conference.short_title}")
end end

View file

@ -204,6 +204,7 @@ describe Program do
program.schedule_interval = 10 program.schedule_interval = 10
program.save! program.save!
program.reload
expect(program.event_types.pluck(:length).sort).to eq [10, 20, 30] expect(program.event_types.pluck(:length).sort).to eq [10, 20, 30]
end end
end end