Upgrade Crystal to 1.2.1 and Lucky to 0.29.0
This commit is contained in:
parent
e365ee8be5
commit
1449acc500
29 changed files with 121 additions and 91 deletions
|
@ -1 +1 @@
|
|||
0.36.1
|
||||
1.2.1
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
nodejs 12.14.1
|
||||
crystal 1.0.0
|
||||
crystal 1.2.1
|
||||
|
|
9
config/application.cr
Normal file
9
config/application.cr
Normal file
|
@ -0,0 +1,9 @@
|
|||
module Application
|
||||
Habitat.create do
|
||||
setting name : String
|
||||
end
|
||||
end
|
||||
|
||||
Application.configure do |settings|
|
||||
settings.name = "Scribe"
|
||||
end
|
|
@ -3,7 +3,8 @@ require "./server"
|
|||
Authentic.configure do |settings|
|
||||
settings.secret_key = Lucky::Server.settings.secret_key_base
|
||||
|
||||
unless Lucky::Env.production?
|
||||
unless LuckyEnv.production?
|
||||
# This value can be between 4 and 31
|
||||
fastest_encryption_possible = 4
|
||||
settings.encryption_cost = fastest_encryption_possible
|
||||
end
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# This enables the color output when in development or test
|
||||
# Check out the Colorize docs for more information
|
||||
# https://crystal-lang.org/api/Colorize.html
|
||||
Colorize.enabled = Lucky::Env.development? || Lucky::Env.test?
|
||||
Colorize.enabled = LuckyEnv.development? || LuckyEnv.test?
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
database_name = "scribe_#{Lucky::Env.name}"
|
||||
database_name = "scribe_#{LuckyEnv.environment}"
|
||||
|
||||
AppDatabase.configure do |settings|
|
||||
if Lucky::Env.production?
|
||||
if LuckyEnv.production?
|
||||
settings.credentials = Avram::Credentials.parse(ENV["DATABASE_URL"])
|
||||
else
|
||||
settings.credentials = Avram::Credentials.parse?(ENV["DATABASE_URL"]?) || Avram::Credentials.new(
|
||||
|
@ -16,5 +16,9 @@ end
|
|||
|
||||
Avram.configure do |settings|
|
||||
settings.database_to_migrate = AppDatabase
|
||||
settings.lazy_load_enabled = Lucky::Env.production?
|
||||
settings.lazy_load_enabled = LuckyEnv.production?
|
||||
|
||||
# Always parse `Time` values with these specific formats.
|
||||
# Used for both database values, and datetime input fields.
|
||||
# settings.time_formats << "%F"
|
||||
end
|
||||
|
|
|
@ -1,24 +1,3 @@
|
|||
module Lucky::Env
|
||||
extend self
|
||||
|
||||
{% for env in [:development, :test, :production] %}
|
||||
def {{ env.id }}?
|
||||
name == {{ env.id.stringify }}
|
||||
end
|
||||
{% end %}
|
||||
|
||||
def name
|
||||
ENV["LUCKY_ENV"]? || "development"
|
||||
end
|
||||
|
||||
# Returns true if a task is being run through the `lucky` cli
|
||||
#
|
||||
# Use this method to only run (or avoid running) code when a task is executed.
|
||||
def task?
|
||||
ENV["LUCKY_TASK"]? == "true"
|
||||
end
|
||||
|
||||
def use_local?
|
||||
ENV.fetch("USE_LOCAL", "false") == "true"
|
||||
end
|
||||
end
|
||||
# Environments are managed using `LuckyEnv`. By default, development, production
|
||||
# and test are supported. See
|
||||
# https://luckyframework.org/guides/getting-started/configuration for details.
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Lucky::ErrorHandler.configure do |settings|
|
||||
settings.show_debug_output = !Lucky::Env.production?
|
||||
settings.show_debug_output = !LuckyEnv.production?
|
||||
end
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Lucky::HTMLPage.configure do |settings|
|
||||
settings.render_component_comments = !Lucky::Env.production?
|
||||
settings.render_component_comments = !LuckyEnv.production?
|
||||
end
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
require "file_utils"
|
||||
|
||||
if Lucky::Env.test?
|
||||
if LuckyEnv.test?
|
||||
# Logs to `tmp/test.log`
|
||||
FileUtils.mkdir_p("tmp")
|
||||
|
||||
backend = Log::IOBackend.new(File.new("tmp/test.log", mode: "w"))
|
||||
backend.formatter = Lucky::PrettyLogFormatter.proc
|
||||
Log.dexter.configure(:debug, backend)
|
||||
elsif Lucky::Env.production?
|
||||
elsif LuckyEnv.production?
|
||||
backend = Log::IOBackend.new
|
||||
backend.formatter = Dexter::JSONLogFormatter.proc
|
||||
Log.dexter.configure(:info, backend)
|
||||
|
@ -26,7 +26,7 @@ Avram::QueryLog.dexter.configure(:none)
|
|||
|
||||
# Skip logging static assets requests in development
|
||||
Lucky::LogHandler.configure do |settings|
|
||||
if Lucky::Env.development?
|
||||
if LuckyEnv.development?
|
||||
settings.skip_if = ->(context : HTTP::Server::Context) {
|
||||
context.request.method.downcase == "get" &&
|
||||
context.request.resource.starts_with?(/\/css\/|\/js\/|\/assets\/|\/favicon\.ico/)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Lucky::RouteHelper.configure do |settings|
|
||||
if Lucky::Env.production?
|
||||
if LuckyEnv.production?
|
||||
# Example: https://my_app.com
|
||||
settings.base_uri = ENV.fetch("APP_DOMAIN")
|
||||
else
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Lucky::Server.configure do |settings|
|
||||
if Lucky::Env.production?
|
||||
if LuckyEnv.production?
|
||||
settings.secret_key_base = secret_key_from_env
|
||||
settings.host = "0.0.0.0"
|
||||
settings.port = ENV["PORT"].to_i
|
||||
|
@ -19,13 +19,23 @@ Lucky::ForceSSLHandler.configure do |settings|
|
|||
# To force SSL in production, uncomment the lines below.
|
||||
# This will cause http requests to be redirected to https:
|
||||
#
|
||||
# settings.enabled = Lucky::Env.production?
|
||||
# settings.enabled = LuckyEnv.production?
|
||||
# settings.strict_transport_security = {max_age: 1.year, include_subdomains: true}
|
||||
#
|
||||
# Or, leave it disabled:
|
||||
settings.enabled = false
|
||||
end
|
||||
|
||||
# Set a uniuqe ID for each HTTP request.
|
||||
Lucky::RequestIdHandler.configure do |settings|
|
||||
# To enable the request ID, uncomment the lines below.
|
||||
# You can set your own custom String, or use a random UUID.
|
||||
#
|
||||
# settings.set_request_id = ->(context : HTTP::Server::Context) {
|
||||
# UUID.random.to_s
|
||||
# }
|
||||
end
|
||||
|
||||
private def secret_key_from_env
|
||||
ENV["SECRET_KEY_BASE"]? || raise_missing_secret_key_in_production
|
||||
end
|
||||
|
|
|
@ -5,16 +5,16 @@
|
|||
"@rails/ujs": "^6.0.0",
|
||||
"compression-webpack-plugin": "^8.0.1",
|
||||
"laravel-mix": "^6.0.28",
|
||||
"normalize-scss": "^7.0.1",
|
||||
"modern-normalize": "^1.1.0",
|
||||
"postcss": "^8.3.6",
|
||||
"tufte-css": "^1.8.0",
|
||||
"turbolinks": "^5.2.0"
|
||||
},
|
||||
"scripts": {
|
||||
"heroku-postbuild": "yarn prod",
|
||||
"dev": "mix",
|
||||
"watch": "mix watch",
|
||||
"prod": "mix --production"
|
||||
"dev": "yarn run mix",
|
||||
"watch": "yarn run mix watch",
|
||||
"prod": "yarn run mix --production"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/compat-data": "^7.9.0",
|
||||
|
|
46
shard.lock
46
shard.lock
|
@ -2,15 +2,19 @@ version: 2.0
|
|||
shards:
|
||||
authentic:
|
||||
git: https://github.com/luckyframework/authentic.git
|
||||
version: 0.7.3
|
||||
version: 0.8.1
|
||||
|
||||
avram:
|
||||
git: https://github.com/luckyframework/avram.git
|
||||
version: 0.20.0
|
||||
version: 0.22.0
|
||||
|
||||
backtracer:
|
||||
git: https://github.com/sija/backtracer.cr.git
|
||||
version: 1.2.1
|
||||
|
||||
carbon:
|
||||
git: https://github.com/luckyframework/carbon.git
|
||||
version: 0.1.4
|
||||
version: 0.2.0
|
||||
|
||||
cry:
|
||||
git: https://github.com/luckyframework/cry.git
|
||||
|
@ -28,17 +32,9 @@ shards:
|
|||
git: https://github.com/luckyframework/dexter.git
|
||||
version: 0.3.3
|
||||
|
||||
dotenv:
|
||||
git: https://github.com/gdotdesign/cr-dotenv.git
|
||||
version: 1.0.0
|
||||
|
||||
exception_page:
|
||||
git: https://github.com/crystal-loot/exception_page.git
|
||||
version: 0.1.5
|
||||
|
||||
future:
|
||||
git: https://github.com/crystal-community/future.cr.git
|
||||
version: 1.0.0+git.commit.9fe168418c6884cb3552c13b004763eb4815ceb9
|
||||
version: 0.2.1
|
||||
|
||||
habitat:
|
||||
git: https://github.com/luckyframework/habitat.git
|
||||
|
@ -46,7 +42,15 @@ shards:
|
|||
|
||||
lucky:
|
||||
git: https://github.com/luckyframework/lucky.git
|
||||
version: 0.27.2
|
||||
version: 0.29.0
|
||||
|
||||
lucky_cache:
|
||||
git: https://github.com/luckyframework/lucky_cache.git
|
||||
version: 0.1.0
|
||||
|
||||
lucky_env:
|
||||
git: https://github.com/luckyframework/lucky_env.git
|
||||
version: 0.1.4
|
||||
|
||||
lucky_flow:
|
||||
git: https://github.com/luckyframework/lucky_flow.git
|
||||
|
@ -54,11 +58,11 @@ shards:
|
|||
|
||||
lucky_router:
|
||||
git: https://github.com/luckyframework/lucky_router.git
|
||||
version: 0.4.2
|
||||
version: 0.5.1
|
||||
|
||||
lucky_task:
|
||||
git: https://github.com/luckyframework/lucky_task.git
|
||||
version: 0.1.0
|
||||
version: 0.1.1
|
||||
|
||||
monads:
|
||||
git: https://github.com/alex-lairan/monads.git
|
||||
|
@ -66,7 +70,7 @@ shards:
|
|||
|
||||
pg:
|
||||
git: https://github.com/will/crystal-pg.git
|
||||
version: 0.23.2
|
||||
version: 0.24.0
|
||||
|
||||
pulsar:
|
||||
git: https://github.com/luckyframework/pulsar.git
|
||||
|
@ -78,11 +82,15 @@ shards:
|
|||
|
||||
shell-table:
|
||||
git: https://github.com/luckyframework/shell-table.cr.git
|
||||
version: 0.9.2+git.commit.ad72379f241ba28698ca2873d9b43785324a7932
|
||||
version: 0.9.3
|
||||
|
||||
splay_tree_map:
|
||||
git: https://github.com/wyhaines/splay_tree_map.cr.git
|
||||
version: 0.2.2
|
||||
|
||||
teeplate:
|
||||
git: https://github.com/luckyframework/teeplate.git
|
||||
version: 0.8.3
|
||||
version: 0.8.5
|
||||
|
||||
webdrivers:
|
||||
git: https://github.com/matthewmcgarvey/webdrivers.cr.git
|
||||
|
@ -90,5 +98,5 @@ shards:
|
|||
|
||||
wordsmith:
|
||||
git: https://github.com/luckyframework/wordsmith.git
|
||||
version: 0.2.2
|
||||
version: 0.3.0
|
||||
|
||||
|
|
16
shard.yml
16
shard.yml
|
@ -1,5 +1,5 @@
|
|||
name: scribe
|
||||
version: 0.1.0
|
||||
version: 1.0.0
|
||||
|
||||
authors:
|
||||
- Edward Loveall <edward@edwardloveall.com>
|
||||
|
@ -8,24 +8,24 @@ targets:
|
|||
scribe:
|
||||
main: src/scribe.cr
|
||||
|
||||
crystal: 1.0.0
|
||||
crystal: 1.2.1
|
||||
|
||||
dependencies:
|
||||
lucky:
|
||||
github: luckyframework/lucky
|
||||
version: ~> 0.27.0
|
||||
version: ~> 0.29.0
|
||||
authentic:
|
||||
github: luckyframework/authentic
|
||||
version: ~> 0.7.3
|
||||
version: ~> 0.8.1
|
||||
carbon:
|
||||
github: luckyframework/carbon
|
||||
version: ~> 0.2.0
|
||||
lucky_env:
|
||||
github: luckyframework/lucky_env
|
||||
version: ~> 0.1.4
|
||||
dotenv:
|
||||
github: gdotdesign/cr-dotenv
|
||||
version: ~> 1.0.0
|
||||
lucky_task:
|
||||
github: luckyframework/lucky_task
|
||||
version: ~> 0.1.0
|
||||
version: ~> 0.1.1
|
||||
monads:
|
||||
github: alex-lairan/monads
|
||||
development_dependencies:
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
# For more detailed documentation, visit
|
||||
# https://luckyframework.org/guides/testing/html-and-interactivity
|
||||
|
||||
LuckyFlow.configure do |settings|
|
||||
settings.stop_retrying_after = 200.milliseconds
|
||||
settings.base_uri = Lucky::RouteHelper.settings.base_uri
|
||||
|
||||
# By default, LuckyFlow is set in "headless" mode (no browser window shown).
|
||||
# Uncomment this to enable running `LuckyFlow` in a Google Chrome window instead.
|
||||
# Be sure to disable for CI.
|
||||
# settings.driver = LuckyFlow::Drivers::Chrome
|
||||
end
|
||||
Spec.before_each { LuckyFlow::Server::INSTANCE.reset }
|
||||
|
|
|
@ -2,4 +2,8 @@ abstract class ApiAction < Lucky::Action
|
|||
# Remove this line if you want to send cookies in the response header.
|
||||
disable_cookies
|
||||
accepted_formats [:json]
|
||||
|
||||
# By default all actions are required to use underscores to separate words.
|
||||
# Add 'include Lucky::SkipRouteStyleCheck' to your actions if you wish to ignore this check for specific routes.
|
||||
include Lucky::EnforceUnderscoredRoute
|
||||
end
|
||||
|
|
|
@ -12,7 +12,7 @@ class Articles::Show < BrowserAction
|
|||
html(
|
||||
Errors::ShowPage,
|
||||
message: "Error parsing the URL",
|
||||
status: 500,
|
||||
status_code: 500,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
@ -39,10 +39,14 @@ class Articles::Show < BrowserAction
|
|||
end
|
||||
|
||||
def client_class
|
||||
if Lucky::Env.use_local?
|
||||
if use_local?
|
||||
LocalClient
|
||||
else
|
||||
MediumClient
|
||||
end
|
||||
end
|
||||
|
||||
def use_local?
|
||||
ENV.fetch("USE_LOCAL", "false") == "true"
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
abstract class BrowserAction < Lucky::Action
|
||||
include Lucky::ProtectFromForgery
|
||||
include Lucky::EnforceUnderscoredRoute
|
||||
include Lucky::SecureHeaders::DisableFLoC
|
||||
|
||||
accepted_formats [:html, :json], default: :html
|
||||
end
|
||||
|
|
|
@ -48,7 +48,7 @@ class Errors::Show < Lucky::ErrorAction
|
|||
|
||||
private def error_html(message : String, status : Int)
|
||||
context.response.status_code = status
|
||||
html Errors::ShowPage, message: message, status: status
|
||||
html_with_status Errors::ShowPage, status, message: message, status_code: status
|
||||
end
|
||||
|
||||
private def error_json(message : String, status : Int, details = nil, param = nil)
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
require "./shards"
|
||||
|
||||
Lucky::AssetHelpers.load_manifest
|
||||
# Load the asset manifest
|
||||
Lucky::AssetHelpers.load_manifest "public/mix-manifest.json"
|
||||
|
||||
require "../config/server"
|
||||
require "../config/**"
|
||||
require "./app_database"
|
||||
require "./constants"
|
||||
require "./models/base_model"
|
||||
|
@ -20,7 +23,5 @@ require "./components/**"
|
|||
require "./classes/**"
|
||||
require "./clients/**"
|
||||
require "./pages/**"
|
||||
require "../config/env"
|
||||
require "../config/**"
|
||||
require "../db/migrations/**"
|
||||
require "./app_server"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
class AppServer < Lucky::BaseAppServer
|
||||
def middleware : Array(HTTP::Handler)
|
||||
[
|
||||
Lucky::RequestIdHandler.new,
|
||||
Lucky::ForceSSLHandler.new,
|
||||
Lucky::HttpMethodOverrideHandler.new,
|
||||
Lucky::LogHandler.new,
|
||||
|
@ -18,7 +19,6 @@ class AppServer < Lucky::BaseAppServer
|
|||
end
|
||||
|
||||
def listen
|
||||
server.bind_tcp(host, port, reuse_port: false)
|
||||
server.listen
|
||||
server.listen(host, port, reuse_port: false)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
class Shared::LayoutHead < BaseComponent
|
||||
needs page_title : String
|
||||
needs context : HTTP::Server::Context
|
||||
|
||||
def render
|
||||
head do
|
||||
|
|
|
@ -2,7 +2,7 @@ class Errors::ShowPage
|
|||
include Lucky::HTMLPage
|
||||
|
||||
needs message : String
|
||||
needs status : Int32
|
||||
needs status_code : Int32
|
||||
|
||||
def render
|
||||
html_doctype
|
||||
|
@ -17,7 +17,7 @@ class Errors::ShowPage
|
|||
|
||||
body do
|
||||
div class: "container" do
|
||||
h2 status, class: "status-code"
|
||||
h2 status_code, class: "status-code"
|
||||
h1 message, class: "message"
|
||||
|
||||
ul class: "helpful-links" do
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
class Home::IndexPage < MainLayout
|
||||
def page_title
|
||||
"Scribe"
|
||||
Application.settings.name
|
||||
end
|
||||
|
||||
def content
|
||||
|
|
|
@ -12,7 +12,7 @@ abstract class MainLayout
|
|||
html_doctype
|
||||
|
||||
html lang: "en" do
|
||||
mount Shared::LayoutHead, page_title: page_title, context: context
|
||||
mount Shared::LayoutHead, page_title: page_title
|
||||
|
||||
body do
|
||||
mount Shared::FlashMessages, context.flash
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Load .env file before any other config or app code
|
||||
require "dotenv"
|
||||
Dotenv.load?
|
||||
require "lucky_env"
|
||||
LuckyEnv.load?(".env")
|
||||
|
||||
# Require your shards here
|
||||
require "avram"
|
||||
|
|
|
@ -2,7 +2,7 @@ require "./app"
|
|||
|
||||
Habitat.raise_if_missing_settings!
|
||||
|
||||
if Lucky::Env.development?
|
||||
if LuckyEnv.development?
|
||||
Avram::Migrator::Runner.new.ensure_migrated!
|
||||
Avram::SchemaEnforcer.ensure_correct_column_mappings!
|
||||
end
|
||||
|
|
10
yarn.lock
10
yarn.lock
|
@ -4036,6 +4036,11 @@ mkdirp@^0.5.5:
|
|||
dependencies:
|
||||
minimist "^1.2.5"
|
||||
|
||||
modern-normalize@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/modern-normalize/-/modern-normalize-1.1.0.tgz#da8e80140d9221426bd4f725c6e11283d34f90b7"
|
||||
integrity sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==
|
||||
|
||||
ms@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||
|
@ -4158,11 +4163,6 @@ normalize-range@^0.1.2:
|
|||
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
|
||||
integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
|
||||
|
||||
normalize-scss@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/normalize-scss/-/normalize-scss-7.0.1.tgz#74485e82bb5d0526371136422a09fdb868ffc1a4"
|
||||
integrity sha512-qj16bWnYs+9/ac29IgGjySg4R5qQTp1lXfm7ApFOZNVBYFY8RZ3f8+XQNDDLHeDtI3Ba7Jj4+LuPgz9v/fne2A==
|
||||
|
||||
normalize-url@^6.0.1:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
|
||||
|
|
Loading…
Reference in a new issue