Initial commit

This commit is contained in:
Senad Uka
2020-05-31 22:38:19 +02:00
commit 858fafc3c5
1280 changed files with 65918 additions and 0 deletions

42
config/application.rb Normal file
View File

@@ -0,0 +1,42 @@
require_relative 'boot'
require "rails"
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
require "active_record/railtie"
require "active_storage/engine"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_mailbox/engine"
require "action_view/railtie"
require "action_cable/engine"
require "sprockets/railtie"
require "action_text/engine"
# require "rails/test_unit/railtie"
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
module EasyRelease
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 6.0
# Settings in config/environments/* take precedence over those specified here.
# Application configuration can go into files in config/initializers
# -- all .rb files in that directory are automatically loaded after loading
# the framework and any gems in your application.
# Don't generate system test files.
config.generators.system_tests = nil
config.active_record.schema_format = :sql
# Detect locale from HTTP headers
config.middleware.use Rack::Locale
config.active_storage.replace_on_assign_to_many = false
end
end

4
config/boot.rb Normal file
View File

@@ -0,0 +1,4 @@
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
require 'bundler/setup' # Set up gems listed in the Gemfile.
require 'bootsnap/setup' # Speed up boot time by caching expensive operations.

15
config/cable.yml Normal file
View File

@@ -0,0 +1,15 @@
development:
<% if ENV["REDIS_URL"] %>
adapter: redis
url: <%= ENV.fetch("REDIS_URL") %>
<% else %>
adapter: async
<% end %>
test:
adapter: test
production:
adapter: redis
url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
channel_prefix: easy_release_production

View File

@@ -0,0 +1 @@
0W15EiP+LwIYXJj9SuZmoQKFVYH7l/SWKnFaFzvLfuibNSxNtwBYj6H/jV8VMVuSE1eOZQDw+n10EPWR8jmAh2E0J5OlcxE4Q7SfsQoF0/srt5meYbyRb5QtWBx0csHZCgtQK/G2Ez8HoxILEYN01UyLeb5zNYlDbLuSUrmFxlzhcUD5f6T0cYEZ+c1s0ZaoT7kVpZf9nS89xDoaJf1XElVUgnSeTedgvx7j55dZZ+t6phl0kvSrJ2FbCe6UnBO+t8VWXPptp1W6Mv+5MlW2mNWC62g2XqMvivS8AYwL7+DvB3ZvngTlrBjl1rjpLpEppS4VgM0GUsJWAGbOFJqg9qiTtapiGKBfdWACMhFUsKgZJR0XNHFtpYGl5ysxR0rg+HC6Ao0PUBn5qEYmxHyrETERNjNfr5UX--SpJalQMTsugk97nB--/OBGVKNeOwJWnzp+Byx4yg==

91
config/database.yml Normal file
View File

@@ -0,0 +1,91 @@
# PostgreSQL. Versions 9.1 and up are supported.
#
# Install the pg driver:
# gem install pg
# On OS X with Homebrew:
# gem install pg -- --with-pg-config=/usr/local/bin/pg_config
# On OS X with MacPorts:
# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
# gem install pg
# Choose the win32 build.
# Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem 'pg'
#
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: easy-release_development
# The specified database role being used to connect to postgres.
# To create additional roles in postgres see `$ createuser --help`.
# When left blank, postgres will use the default role. This is
# the same name as the operating system user that initialized the database.
#username: easy-release
# The password associated with the postgres role (username).
#password:
# Connect on a TCP socket. Omitted by default since the client uses a
# domain socket that doesn't need configuration. Windows does not have
# domain sockets, so uncomment these lines.
#host: localhost
# The TCP port the server listens on. Defaults to 5432.
# If your server runs on a different port number, change accordingly.
#port: 5432
# Schema search path. The server defaults to $user,public
#schema_search_path: myapp,sharedapp,public
# Minimum log levels, in increasing order:
# debug5, debug4, debug3, debug2, debug1,
# log, notice, warning, error, fatal, and panic
# Defaults to warning.
#min_messages: notice
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: easy-release_test
# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
# production:
# url: <%= ENV['DATABASE_URL'] %>
#
review:
<<: *default
database: easy-release_review
username: easy-release
password: <%= ENV['EASY-RELEASE_DATABASE_PASSWORD'] %>
production:
<<: *default
database: easy-release_production
username: easy-release
password: <%= ENV['EASY-RELEASE_DATABASE_PASSWORD'] %>

5
config/environment.rb Normal file
View File

@@ -0,0 +1,5 @@
# Load the Rails application.
require_relative 'application'
# Initialize the Rails application.
Rails.application.initialize!

View File

@@ -0,0 +1,78 @@
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes.
config.cache_classes = false
# Do not eager load code on boot.
config.eager_load = false
# Show full error reports.
config.consider_all_requests_local = true
# Enable/disable caching. By default caching is disabled.
# Run rails dev:cache to toggle caching.
if Rails.root.join('tmp', 'caching-dev.txt').exist?
config.action_controller.perform_caching = true
config.action_controller.enable_fragment_cache_logging = true
config.cache_store = :memory_store
config.public_file_server.headers = {
'Cache-Control' => "public, max-age=#{2.days.to_i}"
}
else
config.action_controller.perform_caching = false
config.cache_store = :null_store
end
# Store uploaded files on the local file system (see config/storage.yml for options)
config.active_storage.service = :amazon
# Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = false
config.action_mailer.perform_caching = false
# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
# Raise an error on page load if there are pending migrations.
config.active_record.migration_error = :page_load
# Highlight code that triggered database queries in logs.
config.active_record.verbose_query_logs = true
# Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large
# number of complex assets.
config.assets.debug = true
# Suppress logger output for asset requests.
config.assets.quiet = true
# Raises error for missing translations
config.action_view.raise_on_missing_translations = true
# Use an evented file watcher to asynchronously detect changes in source code,
# routes, locales, etc. This feature depends on the listen gem.
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
# Raises error for unpermitted controller parameters
config.action_controller.action_on_unpermitted_parameters = :raise
# Set default values for the host and port used in URLs
config.action_controller.default_url_options = {
host: AppHost.new.domain,
port: AppHost.new.port,
protocol: AppHost.new.protocol,
}
if ENV["REDIS_URL"]
config.active_job.queue_adapter = :sidekiq
end
config.hosts << /[a-z0-9]+\.ngrok\.io/
end

View File

@@ -0,0 +1,113 @@
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# Code is not reloaded between requests.
config.cache_classes = true
# Eager load code on boot. This eager loads most of Rails and
# your application in memory, allowing both threaded web servers
# and those relying on copy on write to perform better.
# Rake tasks automatically ignore this option for performance.
config.eager_load = true
# Full error reports are disabled and caching is turned on.
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
# Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
# or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
# config.require_master_key = true
# Disable serving static files from the `/public` folder by default since
# Apache or NGINX already handles this.
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
# Compress JavaScripts and CSS.
# Enable ES 6 compilation
# See: https://github.com/lautis/uglifier/issues/127
config.assets.js_compressor = Uglifier.new(harmony: true)
# config.assets.css_compressor = :sass
# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false
# `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
# config.action_controller.asset_host = 'http://assets.example.com'
# Specifies the header that your server uses for sending files.
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
# Store uploaded files on the local file system (see config/storage.yml for options)
config.active_storage.service = :amazon
# Mount Action Cable outside main process or domain
# config.action_cable.mount_path = nil
# config.action_cable.url = 'wss://example.com/cable'
# config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
config.force_ssl = AppHost.new.using_ssl?
# Use the lowest log level to ensure availability of diagnostic information
# when problems arise.
config.log_level = :debug
# Prepend all log lines with the following tags.
config.log_tags = [:request_id]
# Use a different cache store in production.
# config.cache_store = :mem_cache_store
# Use a real queuing backend for Active Job (and separate queues per environment)
config.active_job.queue_adapter = :sidekiq
# config.active_job.queue_name_prefix = "easy_release_#{Rails.env}"
config.action_mailer.perform_caching = false
# Ignore bad email addresses and do not raise email delivery errors.
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
# config.action_mailer.raise_delivery_errors = false
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation cannot be found).
config.i18n.fallbacks = true
# Send deprecation notices to registered listeners.
config.active_support.deprecation = :notify
# Use default logging formatter so that PID and timestamp are not suppressed.
config.log_formatter = ::Logger::Formatter.new
# Use a different logger for distributed setups.
# require 'syslog/logger'
# config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
if ENV["RAILS_LOG_TO_STDOUT"].present?
logger = ActiveSupport::Logger.new(STDOUT)
logger.formatter = config.log_formatter
config.logger = ActiveSupport::TaggedLogging.new(logger)
end
# Do not dump schema after migrations.
config.active_record.dump_schema_after_migration = false
# Set default value for the host used in URLs
config.action_controller.default_url_options = {
host: AppHost.new.domain,
protocol: AppHost.new.protocol,
}
# Configure ActionMailer to use SendGrid
ActionMailer::Base.smtp_settings = {
user_name: ENV['SENDGRID_USERNAME'],
password: ENV['SENDGRID_PASSWORD'],
domain: AppHost.new.domain,
address: 'smtp.sendgrid.net',
port: 587,
authentication: :plain,
enable_starttls_auto: true
}
end

View File

@@ -0,0 +1,113 @@
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# Code is not reloaded between requests.
config.cache_classes = true
# Eager load code on boot. This eager loads most of Rails and
# your application in memory, allowing both threaded web servers
# and those relying on copy on write to perform better.
# Rake tasks automatically ignore this option for performance.
config.eager_load = true
# Full error reports are disabled and caching is turned on.
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
# Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
# or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
# config.require_master_key = true
# Disable serving static files from the `/public` folder by default since
# Apache or NGINX already handles this.
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
# Compress JavaScripts and CSS.
# Enable ES 6 compilation
# See: https://github.com/lautis/uglifier/issues/127
config.assets.js_compressor = Uglifier.new(harmony: true)
# config.assets.css_compressor = :sass
# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false
# `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
# config.action_controller.asset_host = 'http://assets.example.com'
# Specifies the header that your server uses for sending files.
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
# Store uploaded files on the local file system (see config/storage.yml for options)
config.active_storage.service = :amazon
# Mount Action Cable outside main process or domain
# config.action_cable.mount_path = nil
# config.action_cable.url = 'wss://example.com/cable'
# config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
config.force_ssl = AppHost.new.using_ssl?
# Use the lowest log level to ensure availability of diagnostic information
# when problems arise.
config.log_level = :debug
# Prepend all log lines with the following tags.
config.log_tags = [:request_id]
# Use a different cache store in production.
# config.cache_store = :mem_cache_store
# Use a real queuing backend for Active Job (and separate queues per environment)
config.active_job.queue_adapter = :sidekiq
# config.active_job.queue_name_prefix = "easy_release_#{Rails.env}"
config.action_mailer.perform_caching = false
# Ignore bad email addresses and do not raise email delivery errors.
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
# config.action_mailer.raise_delivery_errors = false
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation cannot be found).
config.i18n.fallbacks = true
# Send deprecation notices to registered listeners.
config.active_support.deprecation = :notify
# Use default logging formatter so that PID and timestamp are not suppressed.
config.log_formatter = ::Logger::Formatter.new
# Use a different logger for distributed setups.
# require 'syslog/logger'
# config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
if ENV["RAILS_LOG_TO_STDOUT"].present?
logger = ActiveSupport::Logger.new(STDOUT)
logger.formatter = config.log_formatter
config.logger = ActiveSupport::TaggedLogging.new(logger)
end
# Do not dump schema after migrations.
config.active_record.dump_schema_after_migration = false
# Set default value for the host used in URLs
config.action_controller.default_url_options = {
host: AppHost.new.domain,
protocol: AppHost.new.protocol,
}
# Configure ActionMailer to use SendGrid
ActionMailer::Base.smtp_settings = {
user_name: ENV['SENDGRID_USERNAME'],
password: ENV['SENDGRID_PASSWORD'],
domain: AppHost.new.domain,
address: 'smtp.sendgrid.net',
port: 587,
authentication: :plain,
enable_starttls_auto: true
}
end

View File

@@ -0,0 +1,52 @@
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped
# and recreated between test runs. Don't rely on the data there!
config.cache_classes = true
# Do not eager load code on boot. This avoids loading your whole application
# just for the purpose of running a single test. If you are using a tool that
# preloads Rails for running tests, you may have to set it to true.
config.eager_load = false
# Configure public file server for tests with Cache-Control for performance.
config.public_file_server.enabled = true
config.public_file_server.headers = {
'Cache-Control' => "public, max-age=#{1.hour.to_i}"
}
# Show full error reports and disable caching.
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Raise exceptions instead of rendering exception templates.
config.action_dispatch.show_exceptions = false
# Disable request forgery protection in test environment.
config.action_controller.allow_forgery_protection = false
# Store uploaded files on the local file system in a temporary directory
config.active_storage.service = :test
config.action_mailer.perform_caching = false
# Tell Action Mailer not to deliver emails to the real world.
# The :test delivery method accumulates sent emails in the
# ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test
# Print deprecation notices to the stderr.
config.active_support.deprecation = :stderr
# Raises error for missing translations
config.action_view.raise_on_missing_translations = true
# Raises error for unpermitted controller parameters
config.action_controller.action_on_unpermitted_parameters = :raise
ENV["ENABLE_ANALYTICS"] = "true"
ENV["BRAYNIAC_AI_API_ENDPOINT"] ||= ""
end

View File

@@ -0,0 +1,3 @@
unless Rails.env.test?
Rails.application.config.hosts << AppHost.new.domain
end

View File

@@ -0,0 +1,4 @@
AnalyticsRuby = Segment::Analytics.new({
write_key: ENV.fetch("SEGMENT_SERVER_KEY", ""),
on_error: Proc.new { |_status, msg| print msg }
})

View File

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

View File

@@ -0,0 +1,14 @@
# 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
# Add Yarn node_modules folder to the asset load path.
Rails.application.config.assets.paths << Rails.root.join('node_modules')
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in the app/assets
# folder are already added.
Rails.application.config.assets.precompile += %w( contract_pdf.css )

View File

@@ -0,0 +1,7 @@
# Be sure to restart your server when you modify this file.
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
# Rails.backtrace_cleaner.remove_silencers!

View File

@@ -0,0 +1,6 @@
require_relative "../../lib/bootstrap_form_extensions"
# Include patches to `bootstrap_form` gem
class BootstrapForm::FormBuilder
prepend BootstrapFormExtensions
end

View File

@@ -0,0 +1 @@
require "brayniac_ai"

View File

@@ -0,0 +1,36 @@
# Be sure to restart your server when you modify this file.
# Define an application-wide content security policy
# For further information see the following documentation
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
Rails.application.config.content_security_policy do |policy|
policy.default_src :self, :https, AppHost.new.domain_with_port, :unsafe_inline
policy.font_src :self, :https, :data
policy.img_src :self, :https, :data
policy.object_src :self
policy.script_src :self, :https, AppHost.new.domain_with_port, "https://stream.mux.com", :blob, :unsafe_eval
policy.media_src :self, :https, AppHost.new.domain_with_port, "https://stream.mux.com", :data, :blob
# policy.style_src :self, :https, :unsafe_inline
# If you are using webpack-dev-server then specify webpack-dev-server host
# policy.connect_src :self, :https, "http://localhost:3035", "ws://localhost:3035" if Rails.env.development?
policy.connect_src :self, :https, "ws://#{AppHost.new.domain_with_port}", "wss://#{AppHost.new.domain_with_port}"
# Specify URI for violation reports
# policy.report_uri "/csp-violation-report-endpoint"
end
# If you are using UJS then enable automatic nonce generation
Rails.application.config.content_security_policy_nonce_generator = -> (request) do
# Use the same CSP nonce for Turbolinks requests
if request.env["HTTP_TURBOLINKS_REFERRER"].present?
request.env["HTTP_X_TURBOLINKS_NONCE"]
else
SecureRandom.base64(16)
end
end
# Report CSP violations to a specified URI
# For further information see the following documentation:
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
# Rails.application.config.content_security_policy_report_only = true

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 = :json

View File

@@ -0,0 +1,13 @@
# Be sure to restart your server when you modify this file.
# Avoid CORS issues when API is called from the frontend app.
# Handle Cross-Origin Resource Sharing (CORS) in order to accept cross-origin AJAX requests.
# Read more: https://github.com/cyu/rack-cors
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins 'https://stream.mux.com'
resource '*', headers: :any, methods: [:get, :post, :options]
end
end

View File

@@ -0,0 +1,7 @@
# 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]
# Filter base64 image strings from logs
Rails.application.config.filter_parameters += ['person_photo.io', 'guardian_photo.io', 'photos.io', 'signature', 'signature_base64']

View File

@@ -0,0 +1,9 @@
hubspot_api_key = ENV["HUBSPOT_API_KEY"]
hubspot_portal_id = ENV["HUBSPOT_PORTAL_ID"]
if hubspot_api_key.present? && hubspot_portal_id.present?
Hubspot.configure(
hapikey: hubspot_api_key,
portal_id: hubspot_portal_id
)
end

View File

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

View File

@@ -0,0 +1,83 @@
require "jsonapi/rails"
JSONAPI::Rails.configure do |config|
# # Set a default serializable class mapping.
# config.jsonapi_class = Hash.new { |h, k|
# names = k.to_s.split('::')
# klass = names.pop
# h[k] = [*names, "Serializable#{klass}"].join('::').safe_constantize
# }
#
# # Set a default serializable class mapping for errors.
# config.jsonapi_errors_class = Hash.new { |h, k|
# names = k.to_s.split('::')
# klass = names.pop
# h[k] = [*names, "Serializable#{klass}"].join('::').safe_constantize
# }.tap { |h|
# h[:'ActiveModel::Errors'] = JSONAPI::Rails::SerializableActiveModelErrors
# h[:Hash] = JSONAPI::Rails::SerializableErrorHash
# }
#
# # Set a default JSON API object.
# config.jsonapi_object = {
# version: '1.0'
# }
#
# # Set default cache.
# # A lambda/proc that will be eval'd in the controller context.
# config.jsonapi_cache = ->() { nil }
#
# # Uncomment the following to enable fragment caching. Make sure you
# # invalidate cache keys accordingly.
# config.jsonapi_cache = lambda {
# Rails.cache
# }
#
# # Set default exposures.
# # A lambda/proc that will be eval'd in the controller context.
# config.jsonapi_expose = lambda {
# { url_helpers: ::Rails.application.routes.url_helpers }
# }
#
# # Set default fields.
# # A lambda/proc that will be eval'd in the controller context.
# config.jsonapi_fields = ->() { nil }
#
# # Uncomment the following to have it default to the `fields` query
# # parameter.
# config.jsonapi_fields = lambda {
# fields_param = params.to_unsafe_hash.fetch(:fields, {})
# Hash[fields_param.map { |k, v| [k.to_sym, v.split(',').map!(&:to_sym)] }]
# }
#
# # Set default include.
# # A lambda/proc that will be eval'd in the controller context.
# config.jsonapi_include = ->() { nil }
#
# # Uncomment the following to have it default to the `include` query
# # parameter.
# config.jsonapi_include = lambda {
# params[:include]
# }
#
# # Set default links.
# # A lambda/proc that will be eval'd in the controller context.
# config.jsonapi_links = ->() { {} }
#
# # Set default meta.
# # A lambda/proc that will be eval'd in the controller context.
# config.jsonapi_meta = ->() { nil }
#
# # Set a default pagination scheme.
# config.jsonapi_pagination = ->(_) { {} }
#
# # Set a logger.
# config.logger = Logger.new(STDOUT)
#
# # Uncomment the following to disable logging.
if Rails.env.test?
# too chatty on the tests, but useful in other envs
# because of the possible deserialization problems
config.logger = Logger.new('/dev/null')
end
end

View File

@@ -0,0 +1,66 @@
require "knock/version"
require "knock/authenticable"
Knock.setup do |config|
## Expiration claim
## ----------------
##
## How long before a token is expired. If nil is provided, token will
## last forever.
##
## Default:
config.token_lifetime = 10.years
## Audience claim
## --------------
##
## Configure the audience claim to identify the recipients that the token
## is intended for.
##
## Default:
# config.token_audience = nil
## If using Auth0, uncomment the line below
# config.token_audience = -> { Rails.application.secrets.auth0_client_id }
## Signature algorithm
## -------------------
##
## Configure the algorithm used to encode the token
##
## Default:
# config.token_signature_algorithm = 'HS256'
## Signature key
## -------------
##
## Configure the key used to sign tokens.
##
## Default:
# config.token_secret_signature_key = -> { Rails.application.secrets.secret_key_base }
# Default does not work in production, other does not work in dev
# When combined, they become: working configuration!
config.token_secret_signature_key = -> {
Rails.application.secrets.secret_key_base || Rails.application.credentials.secret_key_base
}
## If using Auth0, uncomment the line below
# config.token_secret_signature_key = -> { JWT.base64url_decode Rails.application.secrets.auth0_client_secret }
## Public key
## ----------
##
## Configure the public key used to decode tokens, if required.
##
## Default:
# config.token_public_key = nil
## Exception Class
## ---------------
##
## Configure the exception to be used when user cannot be found.
##
## Default:
# config.not_found_exception_class_name = 'ActiveRecord::RecordNotFound'
end

View File

@@ -0,0 +1,2 @@
# Whitelist locales available for the application
I18n.available_locales = [:en, :es]

View File

@@ -0,0 +1,4 @@
# Be sure to restart your server when you modify this file.
# Add new mime types for use in respond_to blocks:
# Mime::Type.register "text/richtext", :rtf

View File

@@ -0,0 +1,115 @@
# encoding : utf-8
MoneyRails.configure do |config|
# To set the default currency
#
# config.default_currency = :usd
# Set default bank object
#
# Example:
# config.default_bank = EuCentralBank.new
# Add exchange rates to current money bank object.
# (The conversion rate refers to one direction only)
#
# Example:
# config.add_rate "USD", "CAD", 1.24515
# config.add_rate "CAD", "USD", 0.803115
# To handle the inclusion of validations for monetized fields
# The default value is true
#
# config.include_validations = true
# Default ActiveRecord migration configuration values for columns:
#
# config.amount_column = { prefix: '', # column name prefix
# postfix: '_cents', # column name postfix
# column_name: nil, # full column name (overrides prefix, postfix and accessor name)
# type: :integer, # column type
# present: true, # column will be created
# null: false, # other options will be treated as column options
# default: 0
# }
#
# config.currency_column = { prefix: '',
# postfix: '_currency',
# column_name: nil,
# type: :string,
# present: true,
# null: false,
# default: 'USD'
# }
# Register a custom currency
#
# Example:
# config.register_currency = {
# priority: 1,
# iso_code: "EU4",
# name: "Euro with subunit of 4 digits",
# symbol: "€",
# symbol_first: true,
# subunit: "Subcent",
# subunit_to_unit: 10000,
# thousands_separator: ".",
# decimal_mark: ","
# }
# Specify a rounding mode
# Any one of:
#
# BigDecimal::ROUND_UP,
# BigDecimal::ROUND_DOWN,
# BigDecimal::ROUND_HALF_UP,
# BigDecimal::ROUND_HALF_DOWN,
# BigDecimal::ROUND_HALF_EVEN,
# BigDecimal::ROUND_CEILING,
# BigDecimal::ROUND_FLOOR
#
# set to BigDecimal::ROUND_HALF_EVEN by default
#
# config.rounding_mode = BigDecimal::ROUND_HALF_UP
# Set default money format globally.
# Default value is nil meaning "ignore this option".
# Example:
#
# config.default_format = {
# no_cents_if_whole: nil,
# symbol: nil,
# sign_before_symbol: nil
# }
# If you would like to use I18n localization (formatting depends on the
# locale):
# config.locale_backend = :i18n
#
# Example (using default localization from rails-i18n):
#
# I18n.locale = :en
# Money.new(10_000_00, 'USD').format # => $10,000.00
# I18n.locale = :es
# Money.new(10_000_00, 'USD').format # => $10.000,00
#
# For the legacy behaviour of "per currency" localization (formatting depends
# only on currency):
config.locale_backend = :currency
#
# Example:
# Money.new(10_000_00, 'USD').format # => $10,000.00
# Money.new(10_000_00, 'EUR').format # => €10.000,00
#
# In case you don't need localization and would like to use default values
# (can be redefined using config.default_format):
# config.locale_backend = nil
# Set default raise_error_on_money_parsing option
# It will be raise error if assigned different currency
# The default value is false
#
# Example:
# config.raise_error_on_money_parsing = false
end

View File

@@ -0,0 +1,4 @@
MuxRuby.configure do |config|
config.username = ENV['MUX_TOKEN_ID']
config.password = ENV['MUX_TOKEN_SECRET']
end

View File

@@ -0,0 +1,3 @@
if ENV["REDIS_URL"]
$redis = Redis.new(url: ENV["REDIS_URL"])
end

View File

@@ -0,0 +1,6 @@
if sentry_dsn = ENV['SENTRY_DSN']
Raven.configure do |config|
config.dsn = sentry_dsn
config.sanitize_fields = Rails.application.config.filter_parameters.map(&:to_s)
end
end

View File

@@ -0,0 +1 @@
WillPaginate.per_page = 15

View File

@@ -0,0 +1,14 @@
# Be sure to restart your server when you modify this file.
# This file contains settings for ActionController::ParamsWrapper which
# is enabled by default.
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
ActiveSupport.on_load(:action_controller) do
wrap_parameters format: [:json]
end
# To enable root element in JSON for ActiveRecord objects.
# ActiveSupport.on_load(:active_record) do
# self.include_root_in_json = true
# end

View File

@@ -0,0 +1,26 @@
require 'zoom'
unless Rails.env.test?
Zoom.configure do |c|
c.api_key = ENV['ZOOM_API_KEY']
c.api_secret = ENV['ZOOM_API_SECRET']
end
end
class Zoom::APIError < StandardError
attr_reader :status_code
def initialize(status_code)
super
@status_code = status_code
end
end
module RaiseErrorsWithCodes
def raise_if_error!(response)
if response&.[]('code') && (response['code'] >= 300 || response['code'] == 124)
raise Zoom::APIError.new(response['code']), response['message']
else
super
end
end
end
Zoom::Utils.singleton_class.send :prepend, RaiseErrorsWithCodes

995
config/locales/en.yml Normal file
View File

@@ -0,0 +1,995 @@
en:
account_auths:
account_auth:
actions:
remove: Remove
confirm: Are you sure you want to remove this user from the account?
account_logo_form:
submit: Upload Logo
create:
notice: Account manager added
destroy:
alert: User has been removed from the account.
form:
submit: Add
index:
heading: Account
invitation:
heading: Add Account Manager
logo:
heading: Add Logo
update:
alert: Role could not be updated.
notice: Role has been updated.
accounts:
create:
error: Invalid sign up details. Please enter valid sign up details
notice: The account was created. Please Sign In
acquired_media_releases:
acquired_media_release:
actions:
manage: Manage
no_media: No Media
create:
notice: The acquired media release has been created
destroy:
alert: The acquired media release has been deleted
edit:
heading: Edit Acquired Media Release
form:
acquired_media_details:
heading: 1 of 3 Release Details
contract_and_rights:
heading: 3 of 3 Contract & Exploitable Rights
files:
heading: 2 of 3 Files
index:
actions:
new: Import Release
search: Search
empty: Acquired Media Releases will appear here
table_headers:
file_infos_count: No. Files
notes: Notes
signed_at: Date Signed
tags: Tags
new:
heading: Import Acquired Media Release
update:
notice: The acquired media release has been updated
activerecord:
attributes:
appearance_release:
person_address: Address
person_email: Email
person_name: Name
person_phone: Phone
person_photo: Photo
signed_on: Date
location_release:
person_company: Company
person_email: Email
person_name: Name
person_phone: Phone
person_title: Title
talent_release:
person_email: Email
person_name: Name
person_phone: Phone
errors:
messages:
attached: is not attached
content_type: is not a valid file format
admin:
accounts:
create:
notice: The account was created
index:
actions:
search: Search accounts.
empty: Accounts will appear here.
update:
notice: The account was updated
application:
header:
sign_out: Sign Out
users:
create:
notice: The user was created
destroy:
alert: The user was deleted
index:
actions:
new: New User
search: Search users
empty: Users will appear here
update:
notice: The user was updated
appearance_releases:
appearance_release:
actions:
manage: Manage
no_photos: Needs Photo
create:
failed_import: Failed to create appearance release for files listed below
no_attachments: Failed to import - no attachments
edit:
heading: Edit Appearance Release
form:
contract_and_rights:
heading: 2 of 3 Contract & Exploitable Rights
person_details:
heading: 1 of 3 Person Details
photos:
guardian_photo:
heading: Guardian Photo
heading: 3 of 3 Photo
person_photo:
heading: Person Photo
index:
actions:
new: Import Release
search: Search
empty: Appearance Releases will appear here
imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release
table_headers:
notes: Notes
signed_at: Date Signed
tags: Tags
new:
heading: Import Appearance Release
shared:
imported_appearance_release_contract_name: Imported Contract
imported_appearance_release_headshot_name: Imported Headshot
type_filter_actions:
all_releases: All Releases
complete_releases: Complete Releases
incomplete_releases: Incomplete Releases
application:
header:
sign_out: Sign Out
sidebar:
files: Files
team_member: Team Member
blank_contracts:
new:
number_of_copies_label: Number of copies
preview_heading: Contract template preview
pdf:
do_not_copy_warning: "DO NOT COPY"
serial_number_label: "Serial Number"
signature_page:
heading: Signature Page
instructions: "By signing this signature page, as of the date listed below, I hereby agree, acknowledge and accept the terms and conditions listed in this %{releasable_name}."
bookmarks:
bookmark:
actions:
manage: Manage
empty_bookmarks:
empty: Notes will appear here
broadcasts:
broadcast:
actions:
manage: Manage
create:
notice: A live stream has been created
destroy:
alert: A live stream has been deleted
api_error: Something went wrong, please try again later after some time
index:
actions:
new: Create New Live Stream
empty: Live streams will appear here
table_headers:
broadcast_created_at: Created Date
broadcast_name: Name
broadcast_status: Status
new:
heading:
Create Live Stream
bulk_taggings:
new_bulk_tag_modal:
submit: Add
contract_downloads:
download:
failure: Your download could not be generated.
pending: "Your %{release_type} contracts are being prepared for download. You will be notified when it's ready."
success: "Your %{release_type} contracts are ready. Download now, or retrieve later in the %{downloads_folder_link} folder. %{download_button}"
contract_templates:
blank_contracts:
create:
number_of_copies_invalid_notice: Please enter valid number greater than 0
contract_template:
actions:
copy_url: Copy Release URL
manage: Manage
qr_code: QR Code
sign: Sign
no_fee: No Fee
create:
notice: The release template has been created
destroy:
archived_failure: Failed to archive the release template
archived_notice: The release template has been archived
form:
exploitable_rights:
heading: 2 of 3 Exploitable Rights
legal:
heading: 3 of 3 Legal
release_info:
heading: 1 of 3 Release Info
index:
actions:
import: Import Release Template
new: Create New Release Template
empty: Release Templates will appear here
heading: Release Templates
table_headers:
release_type: Type of Release
signed_release_count: No. Signed Releases
new:
heading: New Release Template
contracts:
photos:
guardian_photo_heading: Guardian photo
heading:
one: Photo
other: Photos
minor_photos_heading:
one: Minor photo
other: Minor photos
signature_page:
heading: Signature Page
instructions: "By signing this signature page, as of the date listed below, I hereby agree, acknowledge and accept the terms and conditions listed in this %{releasable_name}."
directories:
destroy:
alert: The folder has been deleted
destroy_file:
alert: File deleted successfully
directories:
heading: Custom Folders
directory:
actions:
delete: Delete Folder
edit: Update Folder
confirm_delete: "WARNING: Are you sure you want to permanently delete this folder? Deleting this folder will also delete all the files stored in this folder."
edit:
heading: Update Folder
file:
manage: Manage
file_form:
heading: UPLOAD NEW FILES
manage: Manage
submit: Upload Files
form:
permissions_help: If you do not select permissions, the software will automatically set it to everyone.
new:
heading: Create New Folder
new_file:
heading: Upload new files
show:
actions:
new: Upload File
search: Search Files
empty: Uploaded files will appear here
heading: Uploaded Files
update:
notice: The folder has been updated
downloads:
download:
actions:
download: Download Zip
manage: Manage
index:
actions:
search: Search Downloads
empty: Downloads will appear here
table_headers:
download_created_at: Created At
download_name: Filename
download_status: Status
download_type: Type
errors_helper:
failure_message: "The following errors have prevented this %{model_name} from being submitted:"
file_infos:
edit:
heading: Add Media
update:
notice: The release has been updated
helpers:
help:
video:
audio_only_edl_file: If you do not upload an Audio Only EDL, the software will not generate a BiG Music Cue Sheet.
edl_file: Please follow our directions on exporting the All Tracks EDL. Failure to do so could result in inaccurate and incomplete reporting.
file: Preferred file type is .mov, however, .mp4 will be accepted. File size must be less than 5GB.
graphics_only_edl_file: If you do not upload a Graphics Only EDL, the software will not generate a Graphics Cue List.
label:
acquired_media_release:
person_address: Address
person_address_city: City
person_address_country: Country
person_address_state: State
person_address_street1: Address
person_address_street2: Address (Line 2)
person_address_zip: Zip code
person_company: Company
person_email: Email address
person_name: Name
person_phone: Phone number
person_title: Title
appearance_release:
minor: Is the person a minor?
person_address: Address
person_email: Email address
person_name: Name
person_phone: Phone number
location_release:
address_city: City
address_country: Country
address_state: State
address_street1: Address
address_street2: Address (Line 2)
address_zip: Zip code
person_address_city: City
person_address_country: Country
person_address_state: State
person_address_street1: Address
person_address_street2: Address (Line 2)
person_address_zip: Zip code
material_release:
person_address: Address
person_address_city: City
person_address_country: Country
person_address_state: State
person_address_street1: Address
person_address_street2: Address (Line 2)
person_address_zip: Zip code
person_company: Company
person_email: Email address
person_name: Name
person_phone: Phone number
person_title: Title
music_release:
person_address: Address
person_address_city: City
person_address_country: Country
person_address_state: State
person_address_street1: Address
person_address_street2: Address (Line 2)
person_address_zip: Zip code
person_company: Company
person_email: Email address
person_name: Name
person_phone: Phone number
person_title: Title
project:
predefined_client_name: Client
talent_release:
guardian_address_city: City
guardian_address_country: Guardian country
guardian_address_state: State
guardian_address_street1: Guardian address
guardian_address_street2: Guardian address (Line 2)
guardian_address_zip: Zip code
guardian_email: Guardian email address
guardian_name: Guardian name
guardian_phone: Guardian phone number
minor: Is the person a minor?
person_address_city: City
person_address_country: Country
person_address_state: State
person_address_street1: Address
person_address_street2: Address (Line 2)
person_address_zip: Zip code
person_email: Email address
person_name: Name
person_phone: Phone number
video:
edl_file: EDL file
file: Video file
name: Episode name
number: Episode number
placeholder:
acquired_media_release:
name: Collection Name
notes: Add notes here...
person_address_city: City
person_address_country: Please select a country
person_address_state: State
person_address_street1: Street
person_address_street2: Apt, Suite, etc.
person_address_zip: Zip / Postal Code
person_company: Company Name
person_email: Email
person_name: Name
person_phone: Phone
person_title: Title
appearance_release:
guardian_address: Street, Apt, City, State, Zip Code
guardian_name: Jane Doe
guardian_phone: 555-555-5555
notes: Add notes here...
person_address: Street, Apt, City, State, Zip Code
person_email: jane.doe@example.com
person_name: Jane Doe
person_phone: 555-555-5555
location_release:
address_city: City
address_country: Please select a country
address_state: State
address_street1: Street
address_street2: Apt, Suite, etc.
address_zip: Zip / Postal Code
name: Location Name
person_address_city: City
person_address_country: Please select a country
person_address_state: State
person_address_street1: Street
person_address_street2: Apt, Suite, etc.
person_address_zip: Zip / Postal Code
person_company: Company Name
person_email: Email
person_name: Name
person_phone: Phone
person_title: Title
material_release:
person_address_city: City
person_address_state: State
person_address_street1: Street
person_address_street2: Apt, Suite, etc.
person_address_zip: Zip / Postal Code
person_company: Company Name
person_email: Email
person_name: Name
person_phone: Phone
person_title: Title
music_release:
name: Collection Name
notes: Add notes here...
person_address_city: City
person_address_country: Please select a country
person_address_state: State
person_address_street1: Street
person_address_street2: Apt, Suite, etc.
person_address_zip: Zip / Postal Code
person_company: Company Name
person_email: Email
person_name: Name
person_phone: Phone
person_title: Title
project:
client_name: Which network is this project for?
description: A quick synopsis of the show
project_membership:
user_email: example@example.com
talent_release:
guardian_address_city: City
guardian_address_country: Please select a country
guardian_address_state: State
guardian_address_street1: Street
guardian_address_street2: Apt, Suite, etc.
guardian_address_zip: Zip / Postal Code
guardian_email: Email
guardian_name: Name
guardian_phone: Phone
notes: Add notes here...
person_address_city: City
person_address_country: Please select a country
person_address_state: State
person_address_street1: Street
person_address_street2: Apt, Suite, etc.
person_address_zip: Zip / Postal Code
person_email: Email
person_name: Name
person_phone: Phone
submit:
acquired_media_release:
create: Import Release
update: Save Changes
appearance_release:
create: Import Release
update: Save Changes
bookmark:
create: Create Note
update: Update Note
broadcast:
create: Create Live Stream
update: Save Changes
contract_template:
create: Create Release Template
directory:
create: Create Folder
new_file: Upload Files
update: Update Folder
location_release:
create: Import Release
update: Save Changes
material_release:
create: Import Release
update: Save Changes
music_release:
create: Import Music Release
update: Save Changes
talent_release:
create: Import Release
update: Save Changes
unreleased_appearance:
create: Create Issue/Concern
update: Update Issue/Concern
video:
create: Upload Video
update: Save Changes
imports:
form:
actions:
submit: Import
index:
cards: Cards
heading: Import Releases
list: List
location_releases:
create:
notice: The location release has been created
destroy:
alert: The location release has been deleted
edit:
heading: Edit Location Release
form:
contract_and_rights:
heading: 3 of 4 Contract & Exploitable Rights
filming_info:
heading: Filming Information
location_details:
heading: 1 of 4 Location Details
photos:
heading: 4 of 4 Photos
signer_details:
heading: 2 of 4 Signer Details
index:
actions:
new: Import Release
search: Search
empty: Location Releases will appear here
table_headers:
address: Address
notes: Notes
signed_at: Date Signed
tags: Tags
location_release:
actions:
manage: Manage
no_photos: Needs Photo
new:
heading: Import Location Release
update:
notice: The location release has been updated
material_releases:
create:
notice: The material release has been created
destroy:
alert: The material release has been deleted
edit:
heading: Edit Material Release (Products / Logos)
form:
contract_and_rights:
heading: 3 of 4 Contract & Exploitable Rights
material_details:
heading: 1 of 3 Material Details
photos:
heading: 4 of 4 Photos
signer_details:
heading: 2 of 4 Signer Details
index:
actions:
new: Import Release
search: Search
empty: Material Releases will appear here
table_headers:
notes: Notes
signed_at: Date Signed
tags: Tags
material_release:
actions:
manage: Manage
no_photos: Needs Photo
new:
heading: Import Material Release (Products / Logos)
update:
notice: The material release has been updated
music_releases:
create:
notice: The music release has been created
destroy:
alert: The music release has been deleted
edit:
heading: Edit Music Release
form:
composers:
heading: 4 of 6 Composers
contract_and_rights:
heading: 3 of 6 Contract & Exploitable Rights
files:
heading: 2 of 6 Files
music_details:
heading: 1 of 6 Release Details
publishers:
heading: 5 of 6 Publishers
signer_details:
heading: 6 of 6 Signer Details
index:
actions:
new: Import Release
search: Search
empty: Music Releases will appear here
table_headers:
composers_count: No. Composers
file_infos_count: No. Files
notes: Notes
publishers_count: No. Publishers
signed_at: Date Signed
tags: Tags
music_release:
actions:
manage: Manage
new:
heading: Import Music Release
update:
notice: The music release has been updated
password_resets:
create:
notice: Check your email for password reset instructions
edit:
notice: This password reset URL has expired or is invalid. Try again by clicking "Forgot your password?" below
submit: Save New Password
title: Password Reset
new:
submit: Reset Password
title: Password Reset
update:
alert: New password can't be blank
notice: Your password has been reset. You may sign in using your new password now.
photos:
edit:
heading: Add Photos
update:
notice: The release has been updated
profiles:
form:
submit: Update Profile
update:
notice: Profile has been updated successfully
project_memberships:
create:
alert: User could not be invited to the project.
notice: User has been invited to the project.
destroy:
alert: User has been removed from the project.
form:
submit: Send Invite
index:
heading: Team
invitation:
heading: Invite New Member
team_roster:
heading:
one: 1 Team Member
other: '%{count} Team Members'
zero: No Team Members
project_membership:
actions:
remove: Remove
confirm: Are you sure you want to remove this user from the project?
projects:
destroy:
alert: The project has been deleted
edit:
heading: Edit Project
empty_projects:
action: Create Your First Project
heading: Welcome
member_message: We are excited to help you organize and automate your media projects. Click on a project you are invited to and get started.
message: We are excited to help you organize and automate your media projects. Click below to create your first project and get started.
form:
confirm_delete:
one: >
"WARNING: Are you sure you want to permanently delete this project? Deleting this project will result in all release templates and all signed appearance, location, and material release contracts to be deleted. There is 1 release in this project that will be deleted by pressing OK. If you do not wish to delete the project, press cancel."
other: >
"WARNING: Are you sure you want to permanently delete this project? Deleting this project will result in all release templates and all signed appearance, location, and material release contracts to be deleted. There are %{count} releases in this project that will be deleted by pressing OK. If you do not wish to delete the project, press cancel."
features_settings:
acquired_media_release: Acquired Media Releases (Footage & Stills)
appearance_release: Appearance Releases
label: Which release categories do you require for this project?
location_release: Location Releases
material_release: Material Releases (Products / Logos)
music_release: Music Releases (Original Music)
talent_release: Talent Releases
index:
actions:
folder: Add Folder
new: Create New Project
heading: Open Projects
new:
heading: Create New Project
project:
actions:
delete: Delete
edit: Edit
team: Team
confirm_delete:
one: >
"WARNING: Are you sure you want to permanently delete this project? Deleting this project will result in all release templates and all signed appearance, talent, location, and material release contracts to be deleted. There is 1 release in this project that will be deleted by pressing OK. If you do not wish to delete the project, press cancel."
other: >
"WARNING: Are you sure you want to permanently delete this project? Deleting this project will result in all release templates and all signed appearance, talent, location, and material release contracts to be deleted. There are %{count} releases in this project that will be deleted by pressing OK. If you do not wish to delete the project, press cancel."
team_member: Team Member
show:
acquired_media_release: Acquired Media Releases (%{count})
appearance_release: Appearance Releases (%{count})
downloads: Downloads
location_release: Location Releases (%{count})
material_release: Material Releases (%{count})
music_release: Music Releases (%{count})
report: Reports
talent_release: Talent Releases (%{count})
public:
acquired_media_releases:
new:
acquired_media_info:
heading: Acquired Media Information
cancel: Cancel
files:
heading: File Information
legal:
heading: Legal
personal_info:
heading: Person Details
personal_info:
heading: Signer's Contact Information
signature:
heading: Signature
appearance_releases:
create:
notice: Your release has been signed. Thank you!
new:
cancel: Cancel
guardian_clause:
heading: Guardian Clause
guardian_info:
heading: Guardian Information
guardian_photo:
heading: Guardian Photo
instructions: >
Lastly, it's time for guardian to take a selfie photo! Please remove your hat and sunglasses (regular eyewear is ok), make sure that you are the only person in the photo, look straight into the camera, and say Cheese!
instructions_html: >
Congrats in appearing on <em>%{name}</em>. Below is the appearance release form. After scrolling down and reading the appearance release form, please enter your personal information, take a selfie photo, and press the "Submit Release" button.
legal:
heading: Legal
personal_info:
heading: Personal Information
instructions: Now, enter your personal information.
photo:
camera_instructions_html: Click <em>Take Photo</em> to Turn ON Camera
heading: Take a Photo
instructions: >
Lastly, it's time for you to take a selfie photo! Please remove your hat and sunglasses (regular eyewear is ok), make sure that you are the only person in the photo, look straight into the camera, and say Cheese!
no_photo: No photo yet
take_photo: Take Photo
warning: If your photo appears sideways, it will be autocorrected when you submit your release.
signature:
heading: Sign Below
location_releases:
create:
notice: Your release has been signed. Thank you!
new:
cancel: Cancel
contact_info:
heading: Signer Information
filming_info:
heading: Filming Information
legal:
heading: Legal
location_info:
heading: Location Information
signature:
heading: Sign Below
material_releases:
create:
notice: Your release has been signed. Thank you!
new:
cancel: Cancel
contact_info:
heading: Signer's Contact Information
legal:
heading: Legal
release_info:
heading: Release Information
signature:
heading: Sign Below
talent_releases:
create:
notice: Your release has been signed. Thank you!
new:
cancel: Cancel
guardian_clause:
heading: Guardian Clause
guardian_info:
heading: Guardian Information
guardian_photo:
camera_instructions_html: Click <em>Take Photo</em> to Turn ON Camera
heading: Guardian Photo
instructions: >
Lastly, it's time for guardian to take a selfie photo! Please remove your hat and sunglasses (regular eyewear is ok), make sure that you are the only person in the photo, look straight into the camera, and say Cheese!
no_photo: No photo yet
take_photo: Take Photo
warning: If your photo appears sideways, it will be autocorrected when you submit your release.
instructions_html: >
Congrats in appearing on <em>%{name}</em>. Below is the talent release form. After scrolling down and reading the talent release form, please enter your personal information, take a selfie photo, and press the "Submit Release" button.
legal:
heading: Legal
personal_info:
heading: Personal Information
instructions: Now, enter your personal information.
photo:
heading: Photos
signature:
heading: Signature
release_template_imports:
create:
error: There was a problem with importing selected templates
imported: Selected templates were imported with success
new:
actions:
import: Import Selected Templates
search: Search
empty: Release Templates from other projects will appear here
table_headers:
release_type: Type of Release
selection: Select Release
report_downloads:
download:
failure: "Your download could not be generated."
pending: "Your reports are being prepared for download. You will be notified when it's ready."
success: "Your reports are ready. Download now, or retrieve later in the %{downloads_folder_link} folder. %{download_button}"
reports:
index:
empty: Reports will appear here
heading: Reports
table_headers:
report_name: Report name
report_published_at: Published At
video_name: Episode name
video_number: Episode number
report:
actions:
download: Download
sessions:
create:
alert: "Email and/or Password is incorrect"
new:
forgot_password: Forgot your password?
submit: Sign In
title: Sign In
shared:
ago: ago
back: Back
cancel: Cancel
clear: Clear
close: Close
csv: CSV
deliver_me: Deliver
direct_me: Direct
disable_with: Loading...
edit_me: Edit
excel: Excel
files: Files
info_message:
one: An EDL event was found. Data is shown below
other: Multiple EDL events were found. Data for the first is shown below
zero: No EDL events were found. Please enter manually
me: Me
print: Print
release_me: Release
search: Search
submit_release: Submit Release
submit_release_long: I have read and agree to the above
suite: Suite
tag_multiple_releases: Add Tag
tag_multiple_releases_form:
submit: Add
tags:
form:
submit: Add
talent_releases:
create:
notice: The talent release has been created
destroy:
alert: The talent release has been deleted
edit:
heading: Edit Talent Release
form:
contract_and_rights:
heading: 2 of 3 Contract & Exploitable Rights
photos:
guardian_photo:
heading: Guardian Photo
heading: 3 of 3 Photos
talent_details:
heading: 1 of 3 Talent Details
index:
actions:
new: Import Release
search: Search
empty: Talent Releases will appear here
table_headers:
notes: Notes
signed_at: Date Signed
tags: Tags
new:
heading: Import Talent Release
talent_release:
actions:
manage: Manage
update:
notice: The talent release has been updated
user_mailer:
existing_account:
subject: You've been added as a ME Suite Account Manager
project_invitation:
subject: You've been added to a project in the ME Suite
welcome:
subject: Welcome to BiG
video_analyses:
actions:
create_bookmark: Create a Note
create_edl_event: EDL Info
create_graphics_element: Add to GFX Cue Sheet
create_release_report: Report
create_unreleased_appearance: Add Issue/Concern
create:
notice: Video and Audio analysis is re-run for the video
edl_events:
create:
info_message:
one: One EDL event for this timecode was found and is shown below
other: Multiple EDL events for this timecode were found and are shown below
zero: No EDL events for this timecode were found
show:
actions:
create_release_report: Reports
empty: Notes will appear here
video:
audio_only_edl_download: Download Audio Only EDL
edl_download: Download EDL
graphics_only_edl_download: Download Graphics Only EDL
videos:
create:
notice: The video has been created
edit:
heading: Edit Video
subheading: 2 of 2 Files
index:
actions:
new: Upload New Video
empty: Videos will appear here
heading: Video Analysis
table_headers:
file: File
reports: Reports
upload_date: Upload Date
turnaround_time_message: Please note, generating of reports can take up to 48 hours
landing:
adobe: Adobe Premiere
avid: Avid
heading: Upload Video
instructions: What video editing system are you using?
subheading: 1 of 2 Editing System
new:
heading: Upload Video
subheading: 2 of 2 Files
update:
notice: The video has been updated
video:
actions:
download: Download
edit: Edit
report: Report
generating: Generating...

184
config/locales/es.yml Normal file
View File

@@ -0,0 +1,184 @@
es:
activerecord:
attributes:
appearance_release:
guardian_address: Dirección del tutor legal
guardian_name: Nómbre del tutor legal
guardian_phone: Número de teléfono del tutor legal
minor: Menor
person_address: Dirección de la persona
person_email: Dirección de correo electrónico de la persona
person_name: Nómbre de la persona
person_phone: Número de teléfono de la persona
person_photo: Foto de la persona
signature: Firma de la persona
signed_on: Fecha
project:
client_name: Nómbre del cliente del proyecto
description: Descripción del proyecto
details: Detalles adicionales del proyecto
name: Nómbre del proyecto de vídeo
producer_address: Dirección del productor
producer_name: Nómbre del productor
models:
appearance_release: Autorización de Aparacimiento
appearance_releases:
create:
failed_import: Failed to create appearance release for files listed below (ES)
no_attachments: Failed to import - no attachments (ES)
form:
photos:
guardian_photo:
heading: Guardian Photo (ES)
person_photo:
heading: Person Photo (ES)
index:
imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release (ES)
shared:
imported_appearance_release_contract_name: Contrato Importado
imported_appearance_release_headshot_name: Retrato Importado
type_filter_actions:
all_releases: All Releases (ES)
complete_releases: Complete Releases (ES)
incomplete_releases: Incomplete Releases (ES)
blank_contracts:
new:
number_of_copies_label: Number of copies (ES)
preview_heading: Contract template preview
pdf:
do_not_copy_warning: "Do not copy (ES)"
serial_number_label: "Serial Number (ES)"
contract_templates:
blank_contracts:
create:
number_of_copies_invalid_notice: Please enter valid number greater than 0 (ES)
contracts:
photos:
guardian_photo_heading: Guardian photo (ES)
heading:
one: Photo (ES)
other: Photos (ES)
minor_photos_heading:
one: Minor photo (ES)
other: Minor photos (ES)
signature_page:
heading: Página de Firma de Autorización de Aparacimiento
instructions: Al firmar esta página de firma, a partir de la fecha indicada abajo, por la presente acepto, reconozco y acepto los términos y condiciones enumerados en esta autorización de aparacimiento.
errors:
messages:
accepted: debe ser aceptado
attached: no está conectado
blank: no puede estar en blanco
confirmation: no coincide con %{attribute}
content_type: no es un formato de archivo válido
empty: no puede estar vacío
equal_to: debe ser igual a %{count}
even: debe ser un número par
exclusion: está reservado
greater_than: debe ser mayor que %{count}
greater_than_or_equal_to: debe ser mayor o igual que %{count}
inclusion: no está incluido en la lista
invalid: es inválido
less_than: debe ser menor que %{count}
less_than_or_equal_to: debe ser menor o igual que %{count}
model_invalid: 'La validación falló: %{errors}'
not_a_number: no es un número
not_an_integer: debe ser un entero
odd: debe ser un número non
other_than:
present: debe ser en blanco
required: debe existir
taken: ya ha sido tomado
too_long:
one: es demasiado largo (máximo 1 caracter)
other: es demasiado largo (máximo %{count} caracteres)
too_short:
one: es demasiado corto (mínimo 1 caracter)
other: es demasiado corto (mínimo %{count} caracteres)
wrong_length:
one: longitud errónea (debe ser de 1 caracter)
other: longitud errónea (debe ser de %{count} caracteres)
errors_helper:
failure_message: "Los siguientes errores han impedido que se presente este %{model_name}:"
helpers:
label:
appearance_release:
guardian_address: Dirección del tutor legal
guardian_name: Nómbre del tutor legal
guardian_phone: Número de teléfono del tutor legal
minor: El firmante es un menor
person_address: Dirección
person_email: Dirección de correo electrónico
person_name: Nómbre
person_phone: Número de teléfono
project:
client_name: Nómbre del cliente del proyecto
description: Descripción del proyecto
details: Detalles adicionales del proyecto
name: Nómbre del proyecto de vídeo
producer_address: Dirección del productor
producer_name: Nómbre del productor
placeholder:
appearance_release:
person_address: Calle, Número de apartamento, Ciudad, Estado, Código Postal
person_email: jane.doe@example.com
person_name: Jane Doe
person_phone: 555-555-5555
submit:
appearance_release:
create: Crear Autorización
broadcast:
create: Create Live Stream (ES)
update: Save Changes (ES)
create: 'Crear %{model}'
update: 'Actualizar %{model}'
public:
appearance_releases:
create:
notice: La autorización está firmada. ¡Gracias!
new:
cancel: Cancelar
guardian_clause:
heading: Guardian Clause (ES)
guardian_photo:
heading: Guardian Photo (ES)
instructions: (ES) Lastly, it's time for guardian to take a selfie photo! Please remove your hat and sunglasses (regular eyewear is ok), make sure that you are the only person in the photo, look straight into the camera, and say Cheese! (ES)
instructions_html: >
Felicitaciones por aparecer en <em>%{name}</em>. La autorіzación aparece a continuación. Después de leer la autorización, por favor rellena tu información personal, toma una foto, y presiona la botón "Crear Autorización".
legal:
heading: Legal
personal_info:
heading: Información Personal
instructions: Ahora, rellena su información personal.
photo:
camera_instructions_html: Haga clic en <em>Take Photo</em> para encender la cámara
heading: Toma una Foto
instructions: Por último, es hora de toma una foto. Por favor quítate el sombrero y las gafas del sol (las gafas regulares están bien), asegúrate de que eres la única persona en la foto, mira directamente a la cámera.
no_photo: No hay foto todavía
warning: Si su foto aparece de lado, se corregirá automáticamente cuando actualizar la autorización
signature:
clear: Despejar
heading: Firma
instructions: 'Firma Abajo:'
talent_releases:
new:
guardian_clause:
heading: Guardian Clause (ES)
guardian_photo:
camera_instructions_html: (ES) Click <em>Take Photo</em> to Turn ON Camera (ES)
heading: Guardian Photo (ES)
instructions: (ES) Lastly, it's time for guardian to take a selfie photo! Please remove your hat and sunglasses (regular eyewear is ok), make sure that you are the only person in the photo, look straight into the camera, and say Cheese! (ES)
no_photo: No hay foto todavía
take_photo: Take Photo (ES)
warning: (ES) If your photo appears sideways, it will be autocorrected when you submit your release. (ES)
teams:
show:
choose_project: ¿Qué proyecto de la lista de abajo asistirá?
welcome_html: Bienvenidos a la plataforma de firma autorizaciónes de <strong>%{name}</strong>
shared:
print: Print (ES)
talent_releases:
form:
photos:
guardian_photo:
heading: Guardian Photo (ES)

View File

@@ -0,0 +1,6 @@
en:
loaf:
breadcrumbs:
home: 'Home'
errors:
invalid_options: "Invalid option :%{invalid}. Valid options are: %{valid}, make sure these are the ones you are using."

View File

@@ -0,0 +1,5 @@
en:
activerecord:
attributes:
user:
password_digest: "Password"

38
config/puma.rb Normal file
View File

@@ -0,0 +1,38 @@
# 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.
#
max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
threads min_threads_count, max_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 `pidfile` that Puma will use.
pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
# Specifies the number of `workers` to boot in clustered mode.
# Workers are forked web server 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.
#
# preload_app!
# Allow puma to be restarted by `rails restart` command.
plugin :tmp_restart

181
config/routes.rb Normal file
View File

@@ -0,0 +1,181 @@
require 'oath/constraints/signed_in'
require 'sidekiq/web'
Rails.application.routes.draw do
AVAILABLE_LOCALES_REGEX = /#{I18n.available_locales.join("|")}/
concern :confirmable do
resources :video_release_confirmations, only: [:new, :create, :destroy]
end
concern :contractable do
resource :contracts, only: [:show]
end
concern :notable do
resources :notes, only: [:index, :new, :create]
end
concern :photoable do
resource :photos, only: [:edit, :update]
end
concern :taggable do
resources :acts_as_taggable_on_tags, only: [:new, :create, :destroy], controller: "tags"
end
concern :file_infoable do
resource :file_infos, only: [:edit, :update]
end
constraints AdminSignedInConstraint.new do
namespace :admin do
mount Sidekiq::Web => '/background_queue', as: :background_queue
resources :accounts, only: [:index, :new, :create, :edit, :update, :show]
resources :users, only: [:index, :new, :create, :edit, :update, :destroy] do
resource :masquerade, only: :create
end
root to: "accounts#index", as: :signed_in_root
end
end
namespace :admin do
resource :masquerade, only: :destroy
end
scope "(:locale)", locale: AVAILABLE_LOCALES_REGEX do
resource :account_session, only: [:update]
resource :session, only: [:destroy]
resource :account, only: [:new, :create, :update]
resources :account_auths, only: [:index, :create, :update, :destroy]
resources :projects, shallow: true do
resources :acquired_media_releases, except: [:show], concerns: [:contractable, :notable, :file_infoable]
resources :appearance_releases, except: [:show], concerns: [:contractable, :notable]
resources :appearance_release_imports, only: [:create]
resources :location_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
resources :material_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
resources :music_releases, except: [:show], concerns: [:contractable, :notable]
resources :talent_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
resources :contract_templates, only: [:index, :new, :create, :destroy] do
resource :qr_codes, only: [:show], controller: "contract_templates/qr_codes"
resource :blank_contracts, only: [:show, :new, :create], controller: "contract_templates/blank_contracts"
end
resource :release_template_imports, only: [:new, :create]
resources :project_memberships, only: [:index, :create, :destroy]
resources :reports, only: [:index]
resource :contract_downloads, only: [:create]
resources :downloads, only: [:index, :destroy]
resource :report_downloads, only: [:create]
resources :videos, only: [:index, :new, :create, :edit, :update] do
collection do
get :landing
end
resources :bookmarks, only: [:new, :create, :destroy, :edit, :update]
resource :video_reports, only: [:show]
resource :graphic_reports, only: [:show]
resource :audio_reports, only: [:show]
resource :issues_and_concerns_reports, only: [:show]
resource :report_publications, only: [:create, :destroy], controller: "videos/report_publications"
resource :video_analyses, only: [:create, :show] do
resources :audio_confirmations, only: [:new, :create, :destroy], controller: "video_analyses/audio_confirmations"
resources :unreleased_appearances, only: [:new, :create, :edit, :update, :destroy], controller: "video_analyses/unreleased_appearances"
resources :edl_events, only: [:create], controller: "video_analyses/edl_events"
resources :graphics_elements, only: [:new, :create, :edit, :update, :destroy], controller: "video_analyses/graphics_elements"
resources :talent_releases, only: [:index], controller: "video_analyses/talent_releases"
resources :appearance_releases, only: [:index], controller: "video_analyses/appearance_releases"
resources :location_releases, only: [:index], controller: "video_analyses/location_releases"
resources :music_releases, only: [:index], controller: "video_analyses/music_releases"
resources :acquired_media_releases, only: [:index], controller: "video_analyses/acquired_media_releases"
resources :material_releases, only: [:index], controller: "video_analyses/material_releases"
end
end
end
resources :projects, only: [] do
resources :broadcasts, except: [:edit] do
resource :zoom_meeting, only: [:show]
end
resources :directories, except: [:index] do
member do
get :new_file
delete :destroy_file
end
end
end
resource :profile, only: [:show, :update]
resources :videos, only: [] do
resources :talent_releases, only: [], concerns: :confirmable
resources :appearance_releases, only: [], concerns: :confirmable
resources :location_releases, only: [], concerns: :confirmable
resources :acquired_media_releases, only: [], concerns: :confirmable
resources :music_releases, only: [], concerns: :confirmable
resources :material_releases, only: [], concerns: :confirmable
end
scope module: :public do
resources :accounts, only: [] do
resources :projects, only: [] do
resources :contract_templates, only: [] do
resources :talent_releases, only: [:new, :create]
resources :appearance_releases, only: [:new, :create]
resources :acquired_media_releases, only: [:new, :create]
resources :location_releases, only: [:new, :create]
resources :material_releases, only: [:new, :create]
end
end
end
resources :broadcasts, param: :token, only: [:show, :update] do
resource :zoom_meeting, only: [:show]
end
end
RELEASES = [:acquired_media_releases, :appearance_releases, :talent_releases, :material_releases, :location_releases]
ALL_RELEASES = RELEASES + [:music_releases]
ALL_RELEASES.each do |release|
resources release, only: [], concerns: :taggable
end
resources :bulk_taggings, only: [:new, :create]
namespace :api do
scope 'v1' do
get 'sync' => 'sync#index'
post 'user_token' => 'user_token#create'
resource :profiles, only: [:show]
resources :projects, only: [:index] do
resources :broadcasts, only: [:index, :show, :update]
RELEASES.each do |release|
resources release, only: [:index]
end
resources :contract_templates, only: [:index]
end
resources :contract_templates, only: [:show] do
RELEASES.each do |release|
resources release, controller: release, only: [:create]
end
end
(RELEASES - [:appearance_releases]).each do |release|
resources release, only: [:show, :update] do
resources :notes, controller: "notes", only: [:create, :index]
end
end
resources :appearance_releases, only: [:show] do
resources :notes, controller: "notes", only: [:create, :index]
end
end
end
# TODO: what's the format on this? JSON only?
resources :notifications, only: [:create]
resources :stream_notifications, only: [:create]
resources :zoom_notifications, only: [:create]
get '/multipart_signatures', to: 'multipart_signatures#create', as: :multipart_signatures
get "cookies_disabled" => 'pages#show', id: "cookies_disabled", as: :cookies_disabled
get "accountless_user" => 'pages#show', id: "accountless_user", as: :accountless_user
resource :session, only: [:new, :create]
resources :password_resets, only: [:new, :create, :edit, :update]
root to: 'projects#index', as: :signed_in_root
end
end

6
config/spring.rb Normal file
View File

@@ -0,0 +1,6 @@
Spring.watch(
".ruby-version",
".rbenv-vars",
"tmp/restart.txt",
"tmp/caching-dev.txt"
)

34
config/storage.yml Normal file
View File

@@ -0,0 +1,34 @@
test:
service: Disk
root: <%= Rails.root.join("tmp/storage") %>
local:
service: Disk
root: <%= Rails.root.join("storage") %>
amazon:
service: S3
access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>
region: <%= ENV.fetch("AWS_REGION") { "us-east-1" } %>
bucket: <%= ENV["AWS_BUCKET"] %>
# Remember not to checkin your GCS keyfile to a repository
# google:
# service: GCS
# project: your_project
# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
# bucket: your_own_bucket
# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
# microsoft:
# service: AzureStorage
# path: your_azure_storage_path
# storage_account_name: your_account_name
# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
# container: your_container_name
# mirror:
# service: Mirror
# primary: local
# mirrors: [ amazon, google, microsoft ]

View File

@@ -0,0 +1,5 @@
process.env.NODE_ENV = process.env.NODE_ENV || 'development'
const environment = require('./environment')
module.exports = environment.toWebpackConfig()

View File

@@ -0,0 +1,3 @@
const { environment } = require('@rails/webpacker')
module.exports = environment

View File

@@ -0,0 +1,5 @@
process.env.NODE_ENV = process.env.NODE_ENV || 'production'
const environment = require('./environment')
module.exports = environment.toWebpackConfig()

5
config/webpack/test.js Normal file
View File

@@ -0,0 +1,5 @@
process.env.NODE_ENV = process.env.NODE_ENV || 'development'
const environment = require('./environment')
module.exports = environment.toWebpackConfig()

101
config/webpacker.yml Normal file
View File

@@ -0,0 +1,101 @@
# Note: You must restart bin/webpack-dev-server for changes to take effect
default: &default
source_path: app/javascript
source_entry_path: packs
public_root_path: public
public_output_path: packs
cache_path: tmp/cache/webpacker
check_yarn_integrity: false
webpack_compile_output: false
# Additional paths webpack should lookup modules
# ['app/assets', 'engine/foo/app/assets']
resolved_paths: []
# Reload manifest.json on all requests so we reload latest compiled packs
cache_manifest: false
# Extract and emit a css file
extract_css: false
static_assets_extensions:
- .jpg
- .jpeg
- .png
- .gif
- .tiff
- .ico
- .svg
- .eot
- .otf
- .ttf
- .woff
- .woff2
extensions:
- .mjs
- .js
- .sass
- .scss
- .css
- .module.sass
- .module.scss
- .module.css
- .png
- .svg
- .gif
- .jpeg
- .jpg
development:
<<: *default
compile: true
# Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules
check_yarn_integrity: true
# Reference: https://webpack.js.org/configuration/dev-server/
dev_server:
https: false
host: localhost
port: 3035
public: localhost:3035
hmr: false
# Inline should be set to true if using HMR
inline: true
overlay: true
compress: true
disable_host_check: true
use_local_ip: false
quiet: false
headers:
'Access-Control-Allow-Origin': '*'
watch_options:
ignored: '**/node_modules/**'
test:
<<: *default
compile: true
# Compile test packs to a separate directory
public_output_path: packs-test
review:
<<: *default
compile: false
extract_css: true
cache_manifest: true
production:
<<: *default
# Production depends on precompilation of packs prior to booting for performance.
compile: false
# Extract and emit a css file
extract_css: true
# Cache manifest.json for performance
cache_manifest: true