amberframework / amber

A Crystal web framework that makes building applications fast, simple, and enjoyable. Get started with quick prototyping, less bugs, and blazing fast performance.
https://amberframework.org
MIT License
2.58k stars 208 forks source link

Compiler error #1129

Closed elaine-jackson closed 5 years ago

elaine-jackson commented 5 years ago

I am unable to run the Amber CLI as Crystal (latest snap) runs into a compiler error. How would Amber advise me to proceed.

Error Output

╰─$ ssh root@172.30.15.149 -p 22648                                                                                                         255 ↵
Linux panel-staging.ulayer.net 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5+deb10u2 (2019-08-08) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Aug 14 19:16:29 2019 from 172.30.115.87
root@panel-staging:~# amber -v
Invalid memory access (signal 11) at address 0x4
[0x55752cbc8736] *CallStack::print_backtrace:Int32 +118
[0x55752cb9ad70] __crystal_sigfault_handler +192
[0x7f4f50d01730] ???
[0x55752cbce305] *String#to_slice:Slice(UInt8) +21
[0x55752cbce2b8] *String#to_s<String::Builder>:Nil +24
[0x55752cbeb311] *String::Builder +17
[0x55752cdb1c6e] *Amber::Environment::Loader#yml_settings_file:String +62
[0x55752cdb1be3] *Amber::Environment::Loader#settings_file_exist?:Bool +19
[0x55752cdb1ba9] *Amber::Environment::Loader#initialize<String, String>:Nil +25
[0x55752cdb1b80] *Amber::Environment::Loader::new<String, String>:Amber::Environment::Loader +112
[0x55752cdb17a3] *Amber::CLI::settings:Amber::Environment::Settings +147
[0x55752cdb1706] *Amber::CLI::logger:Amber::Environment::Logger +6
[0x55752cb8083a] __crystal_main +9754
[0x55752cf5a626] *Crystal::main_user_code<Int32, Pointer(Pointer(UInt8))>:Nil +6
[0x55752cf5a589] *Crystal::main<Int32, Pointer(Pointer(UInt8))>:Int32 +41
[0x55752cb928c6] main +6
[0x7f4f508d109b] __libc_start_main +235
[0x55752cb7e15a] _start +42
[0x0] ???
root@panel-staging:~# crystal -v
Crystal 0.31.0-dev [59fb22d4b] (2019-08-14)

LLVM: 4.0.0
Default target: x86_64-unknown-linux-gnu
root@panel-staging:~# 
drujensen commented 5 years ago

looks like this is crashing: https://github.com/amberframework/amber/blob/master/src/amber/environment/loader.cr#L21

elaine-jackson commented 5 years ago

looks like this is crashing: https://github.com/amberframework/amber/blob/master/src/amber/environment/loader.cr#L21

Interesting. Amber crashes using the snap for Crystal "edge" and the snap for Crystal "stable"

root@panel-staging:~# amber -v
Invalid memory access (signal 11) at address 0x4
[0x55cd1feae736] *CallStack::print_backtrace:Int32 +118
[0x55cd1fe80d70] __crystal_sigfault_handler +192
[0x7f388d3a5730] ???
[0x55cd1feb4305] *String#to_slice:Slice(UInt8) +21
[0x55cd1feb42b8] *String#to_s<String::Builder>:Nil +24
[0x55cd1fed1311] *String::Builder +17
[0x55cd20097c6e] *Amber::Environment::Loader#yml_settings_file:String +62
[0x55cd20097be3] *Amber::Environment::Loader#settings_file_exist?:Bool +19
[0x55cd20097ba9] *Amber::Environment::Loader#initialize<String, String>:Nil +25
[0x55cd20097b80] *Amber::Environment::Loader::new<String, String>:Amber::Environment::Loader +112
[0x55cd200977a3] *Amber::CLI::settings:Amber::Environment::Settings +147
[0x55cd20097706] *Amber::CLI::logger:Amber::Environment::Logger +6
[0x55cd1fe6683a] __crystal_main +9754
[0x55cd20240626] *Crystal::main_user_code<Int32, Pointer(Pointer(UInt8))>:Nil +6
[0x55cd20240589] *Crystal::main<Int32, Pointer(Pointer(UInt8))>:Int32 +41
[0x55cd1fe788c6] main +6
[0x7f388cf7509b] __libc_start_main +235
[0x55cd1fe6415a] _start +42
[0x0] ???
root@panel-staging:~# crystal -v
Crystal 0.30.1 [5e6a1b672] (2019-08-12)

LLVM: 4.0.0
Default target: x86_64-unknown-linux-gnu

Any ideas on a fix?

elaine-jackson commented 5 years ago

Interesting to note that Crystal on macOS isn't affected by this bug and Amber works as expected.

╭─nathanielsuchy@Nathaniels-MacBook-Pro ~/Code/ulayer ‹master› 
╰─$ crystal -v
Crystal 0.30.1 (2019-08-13)

LLVM: 8.0.1
Default target: x86_64-apple-macosx
╭─nathanielsuchy@Nathaniels-MacBook-Pro ~/Code/ulayer ‹master› 
╰─$ amber watch
08:03:06 Watch run  | (INFO) Building...
08:03:12 Watch run  | (INFO) Compiled in 00:00:06.685964570
08:03:12 Watch npm  | (INFO) Building...
[2019-08-14T20:03:12.705213000Z] main.INFO: Amber 0.30.0 serving application "Universial layer panel" at http://0.0.0.0:8080
[2019-08-14T20:03:12.705903000Z] main.INFO: Server started in development.
[2019-08-14T20:03:12.705940000Z] main.INFO: Startup Time 00:00:00.000739000
⸨         ░░░░░░░░░⸩ ⠧ prepare:ulayer: info lifecycle ulayer@0.1

Maybe this is an LLVM 4 bug?

drujensen commented 5 years ago

I would dig into this deeper: @yml_settings ||= File.expand_path("#{@path}/#{@environment}.yml")

See if you can verify the @path and @environment variables are properly being set.

elaine-jackson commented 5 years ago

@yml_settings ||= File.expand_path("#{@path}/#{@environment}.yml")

Tried putting it into a script but unfortunately instance variables can't be accessed at the top level.

Information of interest:

root@panel-staging:~/ulayerpanel# crystal env
CRYSTAL_CACHE_DIR="/root/snap/crystal/common/.cache/crystal"
CRYSTAL_PATH="/snap/crystal/71/bin/../share/crystal/src:lib"
CRYSTAL_VERSION="0.30.1"
CRYSTAL_LIBRARY_PATH="/snap/crystal/71/bin/../lib/crystal/lib"
root@panel-staging:~/ulayerpanel# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

Running the application through Crystal seems to work fine randomly:

root@panel-staging:~/ulayerpanel# crystal src/ulayer.cr --error-trace
[2019-08-14T20:14:48.514529000Z] main.INFO: Amber 0.30.0 serving application "Universial layer panel" at http://0.0.0.0:8080
[2019-08-14T20:14:48.514641000Z] main.INFO: Server started in development.
[2019-08-14T20:14:48.514656000Z] main.INFO: Startup Time 00:00:00.000132000

But if we go back to Amber

root@panel-staging:~/ulayerpanel# amber
Invalid memory access (signal 11) at address 0x4
[0x55e2ee2df736] *CallStack::print_backtrace:Int32 +118
[0x55e2ee2b1d70] __crystal_sigfault_handler +192
[0x7fefa2f42730] ???
[0x55e2ee2e5305] *String#to_slice:Slice(UInt8) +21
[0x55e2ee2e52b8] *String#to_s<String::Builder>:Nil +24
[0x55e2ee302311] *String::Builder +17
[0x55e2ee4c8c6e] *Amber::Environment::Loader#yml_settings_file:String +62
[0x55e2ee4c8be3] *Amber::Environment::Loader#settings_file_exist?:Bool +19
[0x55e2ee4c8ba9] *Amber::Environment::Loader#initialize<String, String>:Nil +25
[0x55e2ee4c8b80] *Amber::Environment::Loader::new<String, String>:Amber::Environment::Loader +112
[0x55e2ee4c87a3] *Amber::CLI::settings:Amber::Environment::Settings +147
[0x55e2ee4c8706] *Amber::CLI::logger:Amber::Environment::Logger +6
[0x55e2ee29783a] __crystal_main +9754
[0x55e2ee671626] *Crystal::main_user_code<Int32, Pointer(Pointer(UInt8))>:Nil +6
[0x55e2ee671589] *Crystal::main<Int32, Pointer(Pointer(UInt8))>:Int32 +41
[0x55e2ee2a98c6] main +6
[0x7fefa2b1209b] __libc_start_main +235
[0x55e2ee29515a] _start +42
[0x0] ???

But after removing the bins and reinstalling Amber

root@panel-staging:~/amber# amber -v
Invalid memory access (signal 11) at address 0x4
[0x55674b112736] *CallStack::print_backtrace:Int32 +118
[0x55674b0e4d70] __crystal_sigfault_handler +192
[0x7fb3ef5bb730] ???
[0x55674b118305] *String#to_slice:Slice(UInt8) +21
[0x55674b1182b8] *String#to_s<String::Builder>:Nil +24
[0x55674b135311] *String::Builder +17
[0x55674b2fbc6e] *Amber::Environment::Loader#yml_settings_file:String +62
[0x55674b2fbbe3] *Amber::Environment::Loader#settings_file_exist?:Bool +19
[0x55674b2fbba9] *Amber::Environment::Loader#initialize<String, String>:Nil +25
[0x55674b2fbb80] *Amber::Environment::Loader::new<String, String>:Amber::Environment::Loader +112
[0x55674b2fb7a3] *Amber::CLI::settings:Amber::Environment::Settings +147
[0x55674b2fb706] *Amber::CLI::logger:Amber::Environment::Logger +6
[0x55674b0ca83a] __crystal_main +9754
[0x55674b4a4626] *Crystal::main_user_code<Int32, Pointer(Pointer(UInt8))>:Nil +6
[0x55674b4a4589] *Crystal::main<Int32, Pointer(Pointer(UInt8))>:Int32 +41
[0x55674b0dc8c6] main +6
[0x7fb3ef18b09b] __libc_start_main +235
[0x55674b0c815a] _start +42
[0x0] ???

Still no luck here

Conclusion? Something is very wrong with how my Amber binary is built. But running my app as Crystal seems to be okay. So now onto how to fix Amber.

Last few changes

root@panel-staging:~/amber# git log
commit 621a073492d4259db6313547509b61d644c6fc24 (HEAD -> master, origin/master, origin/HEAD)
Author: Isaac Sloan <isaac@isaacsloan.com>
Date:   Wed Aug 14 09:10:43 2019 -0700

    updated crystal version to the version amber was just updated for (#1128)

commit 8c7f2affb64647299fb5f0caea8b30d533dc6117
Author: Dru Jensen <drujensen@gmail.com>
Date:   Wed Aug 7 23:16:33 2019 -0700

    Setting amber version lock back to master after release of v0.30.0

commit e39d6384caa2a4ef831183231fa906154aa1b9e1 (tag: v0.30.0, origin/stable)
Author: Dru Jensen <drujensen@gmail.com>
Date:   Wed Aug 7 23:16:21 2019 -0700

    Crystal 0.30.0 suppport

commit 1259f5843ecfa794f341b87045d6062a60a7eb93
Author: Dru Jensen <drujensen@gmail.com>
Date:   Wed Aug 7 23:15:13 2019 -0700

    Crystal v0.30.0 changes (#1126)

:
elaine-jackson commented 5 years ago

Okay so after a complete reinstall:

root@panel-staging:~# wget https://github.com/amberframework/amber/archive/v0.30.0.zip
--2019-08-14 20:30:16--  https://github.com/amberframework/amber/archive/v0.30.0.zip
Resolving github.com (github.com)... 140.82.114.4
Connecting to github.com (github.com)|140.82.114.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/amberframework/amber/zip/v0.30.0 [following]
--2019-08-14 20:30:16--  https://codeload.github.com/amberframework/amber/zip/v0.30.0
Resolving codeload.github.com (codeload.github.com)... 140.82.114.9
Connecting to codeload.github.com (codeload.github.com)|140.82.114.9|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/zip]
Saving to: ‘v0.30.0.zip’

v0.30.0.zip                              [   <=>                                                               ] 268.91K   622KB/s    in 0.4s    

2019-08-14 20:30:17 (622 KB/s) - ‘v0.30.0.zip’ saved [275367]

root@panel-staging:~# ls
snap  ulayerpanel  v0.30.0.zip
root@panel-staging:~# unzip v*.zip
Archive:  v0.30.0.zip
e39d6384caa2a4ef831183231fa906154aa1b9e1
   creating: amber-0.30.0/
 extracting: amber-0.30.0/.crystal-version  
   creating: amber-0.30.0/.github/
  inflating: amber-0.30.0/.github/AMBER_PHILOSOPHY.md  
  inflating: amber-0.30.0/.github/CODE_OF_CONDUCT.md  
  inflating: amber-0.30.0/.github/CONTRIBUTING.md  
  inflating: amber-0.30.0/.github/FUNDING.yml  
  inflating: amber-0.30.0/.github/PULL_REQUEST_TEMPLATE  
  inflating: amber-0.30.0/.github/issue_template.md  
  inflating: amber-0.30.0/.gitignore  
  inflating: amber-0.30.0/.gitmessage  
  inflating: amber-0.30.0/.travis.yml  
  inflating: amber-0.30.0/Backers.md  
  inflating: amber-0.30.0/Dockerfile  
  inflating: amber-0.30.0/LICENSE    
  inflating: amber-0.30.0/Makefile   
  inflating: amber-0.30.0/README.md  
   creating: amber-0.30.0/assets/
   creating: amber-0.30.0/assets/js/
  inflating: amber-0.30.0/assets/js/amber.js  
  inflating: amber-0.30.0/assets/js/amber.min.js  
  inflating: amber-0.30.0/assets/js/webpack.config.js  
   creating: amber-0.30.0/bin/
  inflating: amber-0.30.0/bin/amber_spec  
  inflating: amber-0.30.0/docker-compose.yml  
  inflating: amber-0.30.0/package.json  
  inflating: amber-0.30.0/shard.yml  
   creating: amber-0.30.0/spec/
   creating: amber-0.30.0/spec/amber/
  inflating: amber-0.30.0/spec/amber/amber_spec.cr  
   creating: amber-0.30.0/spec/amber/cli/
   creating: amber-0.30.0/spec/amber/cli/commands/
  inflating: amber-0.30.0/spec/amber/cli/commands/database_spec.cr  
  inflating: amber-0.30.0/spec/amber/cli/commands/encrypt_spec.cr  
  inflating: amber-0.30.0/spec/amber/cli/commands/exec_spec.cr  
   creating: amber-0.30.0/spec/amber/cli/commands/generate/
  inflating: amber-0.30.0/spec/amber/cli/commands/generate/error_template_spec.cr  
  inflating: amber-0.30.0/spec/amber/cli/commands/generator_spec.cr  
  inflating: amber-0.30.0/spec/amber/cli/commands/init_spec.cr  
   creating: amber-0.30.0/spec/amber/cli/commands/pipelines/
  inflating: amber-0.30.0/spec/amber/cli/commands/pipelines/pipelines_spec.cr  
   creating: amber-0.30.0/spec/amber/cli/commands/routes/
  inflating: amber-0.30.0/spec/amber/cli/commands/routes/routes_spec.cr  
   creating: amber-0.30.0/spec/amber/cli/recipes/
  inflating: amber-0.30.0/spec/amber/cli/recipes/recipe_fetcher_spec.cr  
  inflating: amber-0.30.0/spec/amber/cli/recipes/recipe_spec.cr  
   creating: amber-0.30.0/spec/amber/cli/templates/
  inflating: amber-0.30.0/spec/amber/cli/templates/app_spec.cr  
  inflating: amber-0.30.0/spec/amber/cli/templates/empty_migration_spec.cr  
  inflating: amber-0.30.0/spec/amber/cli/templates/migration_spec.cr  
  inflating: amber-0.30.0/spec/amber/cli/templates/migration_spec_helper.cr  
   creating: amber-0.30.0/spec/amber/controller/
  inflating: amber-0.30.0/spec/amber/controller/base_spec.cr  
  inflating: amber-0.30.0/spec/amber/controller/filters_spec.cr  
  inflating: amber-0.30.0/spec/amber/controller/redirect_spec.cr  
  inflating: amber-0.30.0/spec/amber/controller/render_spec.cr  
  inflating: amber-0.30.0/spec/amber/controller/respond_with_spec.cr  
   creating: amber-0.30.0/spec/amber/dsl/
  inflating: amber-0.30.0/spec/amber/dsl/server_spec.cr  
   creating: amber-0.30.0/spec/amber/environment/
  inflating: amber-0.30.0/spec/amber/environment/env_spec.cr  
  inflating: amber-0.30.0/spec/amber/environment/loader_spec.cr  
  inflating: amber-0.30.0/spec/amber/environment/logger_spec.cr  
  inflating: amber-0.30.0/spec/amber/environment/settings_spec.cr  
   creating: amber-0.30.0/spec/amber/extensions/
  inflating: amber-0.30.0/spec/amber/extensions/http_spec.cr  
  inflating: amber-0.30.0/spec/amber/extensions/number_spec.cr  
  inflating: amber-0.30.0/spec/amber/extensions/string_spec.cr  
   creating: amber-0.30.0/spec/amber/pipes/
  inflating: amber-0.30.0/spec/amber/pipes/client_ip_spec.cr  
  inflating: amber-0.30.0/spec/amber/pipes/cors_spec.cr  
  inflating: amber-0.30.0/spec/amber/pipes/csrf_spec.cr  
  inflating: amber-0.30.0/spec/amber/pipes/error_spec.cr  
  inflating: amber-0.30.0/spec/amber/pipes/flash_spec.cr  
  inflating: amber-0.30.0/spec/amber/pipes/pipeline_spec.cr  
  inflating: amber-0.30.0/spec/amber/pipes/powered_by_amber_spec.cr  
  inflating: amber-0.30.0/spec/amber/pipes/session_spec.cr  
  inflating: amber-0.30.0/spec/amber/pipes/static_spec.cr  
   creating: amber-0.30.0/spec/amber/router/
  inflating: amber-0.30.0/spec/amber/router/context_spec.cr  
  inflating: amber-0.30.0/spec/amber/router/cookies_spec.cr  
  inflating: amber-0.30.0/spec/amber/router/params_spec.cr  
   creating: amber-0.30.0/spec/amber/router/parsers/
  inflating: amber-0.30.0/spec/amber/router/parsers/json_spec.cr  
  inflating: amber-0.30.0/spec/amber/router/request_spec.cr  
  inflating: amber-0.30.0/spec/amber/router/route_spec.cr  
  inflating: amber-0.30.0/spec/amber/router/router_spec.cr  
  inflating: amber-0.30.0/spec/amber/router/scope_spec.cr  
   creating: amber-0.30.0/spec/amber/router/session/
  inflating: amber-0.30.0/spec/amber/router/session/cookie_store_spec.cr  
  inflating: amber-0.30.0/spec/amber/router/session/redis_store_spec.cr  
  inflating: amber-0.30.0/spec/amber/router/session_spec.cr  
   creating: amber-0.30.0/spec/amber/ssl/
  inflating: amber-0.30.0/spec/amber/ssl/cert.pem  
  inflating: amber-0.30.0/spec/amber/ssl/key.pem  
  inflating: amber-0.30.0/spec/amber/ssl/ssl_spec.cr  
   creating: amber-0.30.0/spec/amber/support/
  inflating: amber-0.30.0/spec/amber/support/file_encryptor.cr  
   creating: amber-0.30.0/spec/amber/validations/
  inflating: amber-0.30.0/spec/amber/validations/base_rule_spec.cr  
  inflating: amber-0.30.0/spec/amber/validations/optional_rule_spec.cr  
  inflating: amber-0.30.0/spec/amber/validations/params_spec.cr  
   creating: amber-0.30.0/spec/amber/websockets/
  inflating: amber-0.30.0/spec/amber/websockets/channel_spec.cr  
  inflating: amber-0.30.0/spec/amber/websockets/client_socket_spec.cr  
  inflating: amber-0.30.0/spec/amber/websockets/client_sockets_spec.cr  
  inflating: amber-0.30.0/spec/build_spec_granite.cr  
  inflating: amber-0.30.0/spec/build_spec_helper.cr  
  inflating: amber-0.30.0/spec/spec_helper.cr  
   creating: amber-0.30.0/spec/support/
   creating: amber-0.30.0/spec/support/config/
 extracting: amber-0.30.0/spec/support/config/.production.enc  
  inflating: amber-0.30.0/spec/support/config/development.yml  
  inflating: amber-0.30.0/spec/support/config/fake_env.yml  
  inflating: amber-0.30.0/spec/support/config/test.yml  
  inflating: amber-0.30.0/spec/support/config/test_with_color.yml  
  inflating: amber-0.30.0/spec/support/fixtures.cr  
   creating: amber-0.30.0/spec/support/fixtures/
  inflating: amber-0.30.0/spec/support/fixtures/cli_fixtures.cr  
  inflating: amber-0.30.0/spec/support/fixtures/controller_fixtures.cr  
  inflating: amber-0.30.0/spec/support/fixtures/render_fixtures.cr  
  inflating: amber-0.30.0/spec/support/fixtures/tasks_fixtures.cr  
  inflating: amber-0.30.0/spec/support/fixtures/websockets_fixtures.cr  
  inflating: amber-0.30.0/spec/support/helpers.cr  
   creating: amber-0.30.0/spec/support/helpers/
  inflating: amber-0.30.0/spec/support/helpers/cli_helper.cr  
  inflating: amber-0.30.0/spec/support/helpers/controller_helper.cr  
  inflating: amber-0.30.0/spec/support/helpers/cookie_helper.cr  
  inflating: amber-0.30.0/spec/support/helpers/router_helper.cr  
  inflating: amber-0.30.0/spec/support/helpers/session_helper.cr  
  inflating: amber-0.30.0/spec/support/helpers/validations_helper.cr  
  inflating: amber-0.30.0/spec/support/helpers/websockets_helper.cr  
   creating: amber-0.30.0/spec/support/sample/
  inflating: amber-0.30.0/spec/support/sample/multipart.txt  
   creating: amber-0.30.0/spec/support/sample/public/
   creating: amber-0.30.0/spec/support/sample/public/dist/
  inflating: amber-0.30.0/spec/support/sample/public/dist/index.html  
  inflating: amber-0.30.0/spec/support/sample/public/index.html  
   creating: amber-0.30.0/spec/support/sample/views/
   creating: amber-0.30.0/spec/support/sample/views/layouts/
 extracting: amber-0.30.0/spec/support/sample/views/layouts/layout.slang  
  inflating: amber-0.30.0/spec/support/sample/views/layouts/layout_with_partials.slang  
   creating: amber-0.30.0/spec/support/sample/views/test/
  inflating: amber-0.30.0/spec/support/sample/views/test/_form.slang  
 extracting: amber-0.30.0/spec/support/sample/views/test/_test.slang  
 extracting: amber-0.30.0/spec/support/sample/views/test/_test2.slang  
 extracting: amber-0.30.0/spec/support/sample/views/test/flash.slang  
 extracting: amber-0.30.0/spec/support/sample/views/test/test.slang  
   creating: amber-0.30.0/src/
  inflating: amber-0.30.0/src/amber.cr  
   creating: amber-0.30.0/src/amber/
  inflating: amber-0.30.0/src/amber/cli.cr  
   creating: amber-0.30.0/src/amber/cli/
  inflating: amber-0.30.0/src/amber/cli/commands.cr  
   creating: amber-0.30.0/src/amber/cli/commands/
  inflating: amber-0.30.0/src/amber/cli/commands/command.cr  
  inflating: amber-0.30.0/src/amber/cli/commands/database.cr  
  inflating: amber-0.30.0/src/amber/cli/commands/encrypt.cr  
  inflating: amber-0.30.0/src/amber/cli/commands/exec.cr  
  inflating: amber-0.30.0/src/amber/cli/commands/generate.cr  
  inflating: amber-0.30.0/src/amber/cli/commands/new.cr  
  inflating: amber-0.30.0/src/amber/cli/commands/pipelines.cr  
  inflating: amber-0.30.0/src/amber/cli/commands/routes.cr  
  inflating: amber-0.30.0/src/amber/cli/commands/watch.cr  
  inflating: amber-0.30.0/src/amber/cli/config.cr  
  inflating: amber-0.30.0/src/amber/cli/generators.cr  
   creating: amber-0.30.0/src/amber/cli/generators/
  inflating: amber-0.30.0/src/amber/cli/generators/api.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/api_controller.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/app.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/auth.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/channel.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/controller.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/empty_migration.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/error.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/field.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/generator.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/mailer.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/migration.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/model.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/scaffold.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/scaffold_controller.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/scaffold_view.cr  
  inflating: amber-0.30.0/src/amber/cli/generators/socket.cr  
   creating: amber-0.30.0/src/amber/cli/helpers/
  inflating: amber-0.30.0/src/amber/cli/helpers/helpers.cr  
  inflating: amber-0.30.0/src/amber/cli/helpers/migration.cr  
  inflating: amber-0.30.0/src/amber/cli/helpers/process_runner.cr  
  inflating: amber-0.30.0/src/amber/cli/helpers/sentry.cr  
   creating: amber-0.30.0/src/amber/cli/recipes/
  inflating: amber-0.30.0/src/amber/cli/recipes/app.cr  
  inflating: amber-0.30.0/src/amber/cli/recipes/controller.cr  
  inflating: amber-0.30.0/src/amber/cli/recipes/file_entries.cr  
  inflating: amber-0.30.0/src/amber/cli/recipes/model.cr  
  inflating: amber-0.30.0/src/amber/cli/recipes/recipe.cr  
  inflating: amber-0.30.0/src/amber/cli/recipes/recipe_fetcher.cr  
   creating: amber-0.30.0/src/amber/cli/recipes/scaffold/
  inflating: amber-0.30.0/src/amber/cli/recipes/scaffold/controller.cr  
  inflating: amber-0.30.0/src/amber/cli/recipes/scaffold/view.cr  
   creating: amber-0.30.0/src/amber/cli/templates/
   creating: amber-0.30.0/src/amber/cli/templates/api/
   creating: amber-0.30.0/src/amber/cli/templates/api/controller/
   creating: amber-0.30.0/src/amber/cli/templates/api/controller/spec/
   creating: amber-0.30.0/src/amber/cli/templates/api/controller/spec/controllers/
 extracting: amber-0.30.0/src/amber/cli/templates/api/controller/spec/controllers/spec_helper.cr  
  inflating: amber-0.30.0/src/amber/cli/templates/api/controller/spec/controllers/{{name}}_controller_spec.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/api/controller/src/
   creating: amber-0.30.0/src/amber/cli/templates/api/controller/src/controllers/
  inflating: amber-0.30.0/src/amber/cli/templates/api/controller/src/controllers/{{name}}_controller.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/app/
  inflating: amber-0.30.0/src/amber/cli/templates/app/.amber.yml.ecr  
 extracting: amber-0.30.0/src/amber/cli/templates/app/.encryption_key.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/.gitignore.ecr  
 extracting: amber-0.30.0/src/amber/cli/templates/app/.travis.yml  
  inflating: amber-0.30.0/src/amber/cli/templates/app/Dockerfile.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/README.md.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/app/config/
  inflating: amber-0.30.0/src/amber/cli/templates/app/config/application.cr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/config/database.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/app/config/environments/
  inflating: amber-0.30.0/src/amber/cli/templates/app/config/environments/development.yml.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/config/environments/production.yml.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/config/environments/test.yml.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/config/i18n.cr  
   creating: amber-0.30.0/src/amber/cli/templates/app/config/initializers/
  inflating: amber-0.30.0/src/amber/cli/templates/app/config/initializers/mailer.cr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/config/routes.cr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/config/settings.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/app/config/webpack/
  inflating: amber-0.30.0/src/amber/cli/templates/app/config/webpack/common.js  
  inflating: amber-0.30.0/src/amber/cli/templates/app/config/webpack/development.js  
  inflating: amber-0.30.0/src/amber/cli/templates/app/config/webpack/entry.js  
  inflating: amber-0.30.0/src/amber/cli/templates/app/config/webpack/production.js  
   creating: amber-0.30.0/src/amber/cli/templates/app/db/
   creating: amber-0.30.0/src/amber/cli/templates/app/db/migrations/
 extracting: amber-0.30.0/src/amber/cli/templates/app/db/migrations/.gitkeep  
  inflating: amber-0.30.0/src/amber/cli/templates/app/db/seeds.cr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/docker-compose.yml.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/package.json.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/app/public/
  inflating: amber-0.30.0/src/amber/cli/templates/app/public/crossdomain.xml  
  inflating: amber-0.30.0/src/amber/cli/templates/app/public/favicon.ico  
 extracting: amber-0.30.0/src/amber/cli/templates/app/public/favicon.png  
   creating: amber-0.30.0/src/amber/cli/templates/app/public/js/
  inflating: amber-0.30.0/src/amber/cli/templates/app/public/js/client_reload.js  
 extracting: amber-0.30.0/src/amber/cli/templates/app/public/robots.txt  
  inflating: amber-0.30.0/src/amber/cli/templates/app/shard.yml.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/app/spec/
  inflating: amber-0.30.0/src/amber/cli/templates/app/spec/spec_helper.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/app/src/
   creating: amber-0.30.0/src/amber/cli/templates/app/src/assets/
   creating: amber-0.30.0/src/amber/cli/templates/app/src/assets/fonts/
 extracting: amber-0.30.0/src/amber/cli/templates/app/src/assets/fonts/.gitkeep  
   creating: amber-0.30.0/src/amber/cli/templates/app/src/assets/images/
 extracting: amber-0.30.0/src/amber/cli/templates/app/src/assets/images/.gitkeep  
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/assets/images/logo.svg  
   creating: amber-0.30.0/src/amber/cli/templates/app/src/assets/javascripts/
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/assets/javascripts/main.js  
   creating: amber-0.30.0/src/amber/cli/templates/app/src/assets/stylesheets/
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/assets/stylesheets/main.scss  
   creating: amber-0.30.0/src/amber/cli/templates/app/src/controllers/
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/controllers/application_controller.cr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/controllers/home_controller.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/app/src/locales/
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/locales/en.yml  
   creating: amber-0.30.0/src/amber/cli/templates/app/src/mailers/
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/mailers/application_mailer.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/app/src/views/
   creating: amber-0.30.0/src/amber/cli/templates/app/src/views/home/
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/views/home/index.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/views/home/index.slang.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/app/src/views/layouts/
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/views/layouts/_nav.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/views/layouts/_nav.slang.ecr  
 extracting: amber-0.30.0/src/amber/cli/templates/app/src/views/layouts/_session.ecr.ecr  
 extracting: amber-0.30.0/src/amber/cli/templates/app/src/views/layouts/_session.slang.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/views/layouts/application.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/views/layouts/application.slang.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/views/layouts/mailer.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/views/layouts/mailer.slang  
  inflating: amber-0.30.0/src/amber/cli/templates/app/src/{{name}}.cr  
   creating: amber-0.30.0/src/amber/cli/templates/auth/
   creating: amber-0.30.0/src/amber/cli/templates/auth/db/
  inflating: amber-0.30.0/src/amber/cli/templates/auth/db/+seeds.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/auth/db/migrations/
  inflating: amber-0.30.0/src/amber/cli/templates/auth/db/migrations/{{timestamp}}_create_{{name}}.sql.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/auth/spec/
   creating: amber-0.30.0/src/amber/cli/templates/auth/spec/controllers/
 extracting: amber-0.30.0/src/amber/cli/templates/auth/spec/controllers/spec_helper.cr  
   creating: amber-0.30.0/src/amber/cli/templates/auth/spec/models/
 extracting: amber-0.30.0/src/amber/cli/templates/auth/spec/models/spec_helper.cr  
  inflating: amber-0.30.0/src/amber/cli/templates/auth/spec/models/{{name}}_spec.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/auth/src/
   creating: amber-0.30.0/src/amber/cli/templates/auth/src/controllers/
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/controllers/registration_controller.cr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/controllers/session_controller.cr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/controllers/{{name}}_controller.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/auth/src/models/
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/models/{{name}}.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/auth/src/pipes/
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/pipes/authenticate.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/auth/src/views/
   creating: amber-0.30.0/src/amber/cli/templates/auth/src/views/layouts/
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/views/layouts/+_session.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/views/layouts/+_session.slang.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/auth/src/views/registration/
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/views/registration/new.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/views/registration/new.slang.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/auth/src/views/session/
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/views/session/new.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/views/session/new.slang.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/auth/src/views/{{name}}/
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/views/{{name}}/edit.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/views/{{name}}/edit.slang.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/views/{{name}}/show.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/auth/src/views/{{name}}/show.slang.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/channel/
   creating: amber-0.30.0/src/amber/cli/templates/channel/src/
   creating: amber-0.30.0/src/amber/cli/templates/channel/src/channels/
  inflating: amber-0.30.0/src/amber/cli/templates/channel/src/channels/{{name}}_channel.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/controller/
   creating: amber-0.30.0/src/amber/cli/templates/controller/spec/
   creating: amber-0.30.0/src/amber/cli/templates/controller/spec/controllers/
 extracting: amber-0.30.0/src/amber/cli/templates/controller/spec/controllers/spec_helper.cr  
  inflating: amber-0.30.0/src/amber/cli/templates/controller/spec/controllers/{{name}}_controller_spec.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/controller/src/
   creating: amber-0.30.0/src/amber/cli/templates/controller/src/controllers/
  inflating: amber-0.30.0/src/amber/cli/templates/controller/src/controllers/{{name}}_controller.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/error/
   creating: amber-0.30.0/src/amber/cli/templates/error/spec/
   creating: amber-0.30.0/src/amber/cli/templates/error/spec/controllers/
  inflating: amber-0.30.0/src/amber/cli/templates/error/spec/controllers/spec_helper.cr  
  inflating: amber-0.30.0/src/amber/cli/templates/error/spec/controllers/{{name}}_controller_spec.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/error/src/
   creating: amber-0.30.0/src/amber/cli/templates/error/src/controllers/
  inflating: amber-0.30.0/src/amber/cli/templates/error/src/controllers/{{name}}_controller.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/error/src/pipes/
  inflating: amber-0.30.0/src/amber/cli/templates/error/src/pipes/error.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/error/src/views/
   creating: amber-0.30.0/src/amber/cli/templates/error/src/views/{{name}}/
 extracting: amber-0.30.0/src/amber/cli/templates/error/src/views/{{name}}/forbidden.ecr.ecr  
 extracting: amber-0.30.0/src/amber/cli/templates/error/src/views/{{name}}/forbidden.slang.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/error/src/views/{{name}}/internal_server_error.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/error/src/views/{{name}}/internal_server_error.slang.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/error/src/views/{{name}}/not_found.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/error/src/views/{{name}}/not_found.slang.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/mailer/
   creating: amber-0.30.0/src/amber/cli/templates/mailer/src/
   creating: amber-0.30.0/src/amber/cli/templates/mailer/src/mailers/
  inflating: amber-0.30.0/src/amber/cli/templates/mailer/src/mailers/{{name}}_mailer.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/mailer/src/views/
   creating: amber-0.30.0/src/amber/cli/templates/mailer/src/views/mailers/
 extracting: amber-0.30.0/src/amber/cli/templates/mailer/src/views/mailers/{{name}}_mailer.html.ecr.ecr  
 extracting: amber-0.30.0/src/amber/cli/templates/mailer/src/views/mailers/{{name}}_mailer.html.slang  
 extracting: amber-0.30.0/src/amber/cli/templates/mailer/src/views/mailers/{{name}}_mailer.txt.ecr.ecr  
 extracting: amber-0.30.0/src/amber/cli/templates/mailer/src/views/mailers/{{name}}_mailer.txt.slang  
   creating: amber-0.30.0/src/amber/cli/templates/migration/
   creating: amber-0.30.0/src/amber/cli/templates/migration/empty/
   creating: amber-0.30.0/src/amber/cli/templates/migration/empty/db/
   creating: amber-0.30.0/src/amber/cli/templates/migration/empty/db/migrations/
  inflating: amber-0.30.0/src/amber/cli/templates/migration/empty/db/migrations/{{timestamp}}_{{name}}.sql.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/migration/full/
   creating: amber-0.30.0/src/amber/cli/templates/migration/full/db/
   creating: amber-0.30.0/src/amber/cli/templates/migration/full/db/migrations/
  inflating: amber-0.30.0/src/amber/cli/templates/migration/full/db/migrations/{{timestamp}}_create_{{name}}.sql.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/model/
   creating: amber-0.30.0/src/amber/cli/templates/model/spec/
   creating: amber-0.30.0/src/amber/cli/templates/model/spec/models/
 extracting: amber-0.30.0/src/amber/cli/templates/model/spec/models/spec_helper.cr  
  inflating: amber-0.30.0/src/amber/cli/templates/model/spec/models/{{name}}_spec.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/model/src/
   creating: amber-0.30.0/src/amber/cli/templates/model/src/models/
  inflating: amber-0.30.0/src/amber/cli/templates/model/src/models/{{name}}.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/scaffold/
   creating: amber-0.30.0/src/amber/cli/templates/scaffold/controller/
   creating: amber-0.30.0/src/amber/cli/templates/scaffold/controller/spec/
   creating: amber-0.30.0/src/amber/cli/templates/scaffold/controller/spec/controllers/
 extracting: amber-0.30.0/src/amber/cli/templates/scaffold/controller/spec/controllers/spec_helper.cr  
  inflating: amber-0.30.0/src/amber/cli/templates/scaffold/controller/spec/controllers/{{name}}_controller_spec.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/scaffold/controller/src/
   creating: amber-0.30.0/src/amber/cli/templates/scaffold/controller/src/controllers/
  inflating: amber-0.30.0/src/amber/cli/templates/scaffold/controller/src/controllers/{{name}}_controller.cr.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/scaffold/view/
   creating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/
   creating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/
   creating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/layouts/
  inflating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/layouts/+_nav.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/layouts/+_nav.slang.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/{{name}}/
  inflating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/{{name}}/_form.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/{{name}}/_form.slang.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/{{name}}/edit.ecr.ecr  
 extracting: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/{{name}}/edit.slang.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/{{name}}/index.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/{{name}}/index.slang.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/{{name}}/new.ecr.ecr  
 extracting: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/{{name}}/new.slang.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/{{name}}/show.ecr.ecr  
  inflating: amber-0.30.0/src/amber/cli/templates/scaffold/view/src/views/{{name}}/show.slang.ecr  
   creating: amber-0.30.0/src/amber/cli/templates/socket/
   creating: amber-0.30.0/src/amber/cli/templates/socket/src/
   creating: amber-0.30.0/src/amber/cli/templates/socket/src/sockets/
  inflating: amber-0.30.0/src/amber/cli/templates/socket/src/sockets/{{name}}_socket.cr.ecr  
   creating: amber-0.30.0/src/amber/controller/
  inflating: amber-0.30.0/src/amber/controller/base.cr  
  inflating: amber-0.30.0/src/amber/controller/error.cr  
  inflating: amber-0.30.0/src/amber/controller/filters.cr  
   creating: amber-0.30.0/src/amber/controller/helpers/
  inflating: amber-0.30.0/src/amber/controller/helpers/csrf.cr  
  inflating: amber-0.30.0/src/amber/controller/helpers/i18n.cr  
  inflating: amber-0.30.0/src/amber/controller/helpers/redirect.cr  
  inflating: amber-0.30.0/src/amber/controller/helpers/render.cr  
  inflating: amber-0.30.0/src/amber/controller/helpers/responders.cr  
  inflating: amber-0.30.0/src/amber/controller/helpers/route.cr  
  inflating: amber-0.30.0/src/amber/controller/static.cr  
   creating: amber-0.30.0/src/amber/dsl/
  inflating: amber-0.30.0/src/amber/dsl/callbacks.cr  
  inflating: amber-0.30.0/src/amber/dsl/router.cr  
  inflating: amber-0.30.0/src/amber/dsl/server.cr  
  inflating: amber-0.30.0/src/amber/environment.cr  
   creating: amber-0.30.0/src/amber/environment/
  inflating: amber-0.30.0/src/amber/environment/env.cr  
  inflating: amber-0.30.0/src/amber/environment/loader.cr  
  inflating: amber-0.30.0/src/amber/environment/logger.cr  
  inflating: amber-0.30.0/src/amber/environment/logger_builder.cr  
  inflating: amber-0.30.0/src/amber/environment/logging.cr  
  inflating: amber-0.30.0/src/amber/environment/settings.cr  
   creating: amber-0.30.0/src/amber/exceptions/
  inflating: amber-0.30.0/src/amber/exceptions/exceptions.cr  
  inflating: amber-0.30.0/src/amber/exceptions/page.cr  
   creating: amber-0.30.0/src/amber/extensions/
  inflating: amber-0.30.0/src/amber/extensions/core.cr  
  inflating: amber-0.30.0/src/amber/extensions/http.cr  
  inflating: amber-0.30.0/src/amber/extensions/number.cr  
  inflating: amber-0.30.0/src/amber/extensions/string.cr  
   creating: amber-0.30.0/src/amber/pipes/
  inflating: amber-0.30.0/src/amber/pipes/base.cr  
  inflating: amber-0.30.0/src/amber/pipes/client_ip.cr  
  inflating: amber-0.30.0/src/amber/pipes/controller.cr  
  inflating: amber-0.30.0/src/amber/pipes/cors.cr  
  inflating: amber-0.30.0/src/amber/pipes/csrf.cr  
  inflating: amber-0.30.0/src/amber/pipes/error.cr  
  inflating: amber-0.30.0/src/amber/pipes/flash.cr  
  inflating: amber-0.30.0/src/amber/pipes/logger.cr  
  inflating: amber-0.30.0/src/amber/pipes/pipeline.cr  
  inflating: amber-0.30.0/src/amber/pipes/powered_by_amber.cr  
  inflating: amber-0.30.0/src/amber/pipes/session.cr  
  inflating: amber-0.30.0/src/amber/pipes/static.cr  
   creating: amber-0.30.0/src/amber/router/
  inflating: amber-0.30.0/src/amber/router/context.cr  
  inflating: amber-0.30.0/src/amber/router/cookies.cr  
   creating: amber-0.30.0/src/amber/router/cookies/
  inflating: amber-0.30.0/src/amber/router/cookies/abstract_store.cr  
  inflating: amber-0.30.0/src/amber/router/cookies/encrypted_store.cr  
  inflating: amber-0.30.0/src/amber/router/cookies/permanent_store.cr  
  inflating: amber-0.30.0/src/amber/router/cookies/signed_store.cr  
  inflating: amber-0.30.0/src/amber/router/cookies/store.cr  
  inflating: amber-0.30.0/src/amber/router/file.cr  
  inflating: amber-0.30.0/src/amber/router/flash.cr  
  inflating: amber-0.30.0/src/amber/router/params.cr  
   creating: amber-0.30.0/src/amber/router/parsers/
  inflating: amber-0.30.0/src/amber/router/parsers/form_data.cr  
  inflating: amber-0.30.0/src/amber/router/parsers/json.cr  
  inflating: amber-0.30.0/src/amber/router/parsers/multipart.cr  
  inflating: amber-0.30.0/src/amber/router/request.cr  
  inflating: amber-0.30.0/src/amber/router/route.cr  
  inflating: amber-0.30.0/src/amber/router/router.cr  
  inflating: amber-0.30.0/src/amber/router/scope.cr  
  inflating: amber-0.30.0/src/amber/router/session.cr  
   creating: amber-0.30.0/src/amber/router/session/
  inflating: amber-0.30.0/src/amber/router/session/abstract_store.cr  
  inflating: amber-0.30.0/src/amber/router/session/cookie_store.cr  
  inflating: amber-0.30.0/src/amber/router/session/redis_store.cr  
  inflating: amber-0.30.0/src/amber/router/session/session_store.cr  
   creating: amber-0.30.0/src/amber/server/
  inflating: amber-0.30.0/src/amber/server/cluster.cr  
  inflating: amber-0.30.0/src/amber/server/server.cr  
  inflating: amber-0.30.0/src/amber/server/ssl.cr  
   creating: amber-0.30.0/src/amber/support/
  inflating: amber-0.30.0/src/amber/support/client_reload.cr  
  inflating: amber-0.30.0/src/amber/support/file_encryptor.cr  
  inflating: amber-0.30.0/src/amber/support/locale_formats.cr  
  inflating: amber-0.30.0/src/amber/support/message_encryptor.cr  
  inflating: amber-0.30.0/src/amber/support/message_verifier.cr  
  inflating: amber-0.30.0/src/amber/support/mime_types.cr  
   creating: amber-0.30.0/src/amber/validators/
  inflating: amber-0.30.0/src/amber/validators/params.cr  
 extracting: amber-0.30.0/src/amber/version.cr  
   creating: amber-0.30.0/src/amber/websockets/
   creating: amber-0.30.0/src/amber/websockets/adapters/
  inflating: amber-0.30.0/src/amber/websockets/adapters/memory.cr  
  inflating: amber-0.30.0/src/amber/websockets/adapters/redis.cr  
  inflating: amber-0.30.0/src/amber/websockets/channel.cr  
  inflating: amber-0.30.0/src/amber/websockets/client_socket.cr  
  inflating: amber-0.30.0/src/amber/websockets/client_sockets.cr  
  inflating: amber-0.30.0/src/amber/websockets/server.cr  
  inflating: amber-0.30.0/src/amber/websockets/subscription_manager.cr  
root@panel-staging:~# ls
amber-0.30.0  snap  ulayerpanel  v0.30.0.zip
root@panel-staging:~# cd amber*
root@panel-staging:~/amber-0.30.0# ls
assets  Backers.md  bin  docker-compose.yml  Dockerfile  LICENSE  Makefile  package.json  README.md  shard.yml  spec  src
root@panel-staging:~/amber-0.30.0# make
Fetching https://github.com/amberframework/amber-router.git
Fetching https://github.com/drujensen/cli.git
Fetching https://github.com/drujensen/optarg.git
Fetching https://github.com/drujensen/callback.git
Fetching https://github.com/mosop/string_inflection.git
Fetching https://github.com/elorest/compiled_license.git
Fetching https://github.com/jeromegn/kilt.git
Fetching https://github.com/TechMagister/liquid.cr.git
Fetching https://github.com/phoffer/inflector.cr.git
Fetching https://github.com/amberframework/micrate.git
Fetching https://github.com/crystal-lang/crystal-db.git
Fetching https://github.com/will/crystal-pg.git
Fetching https://github.com/crystal-lang/crystal-mysql.git
Fetching https://github.com/crystal-lang/crystal-sqlite3.git
Fetching https://github.com/stefanwille/crystal-redis.git
Fetching https://github.com/ysbaddaden/pool.git
Fetching https://github.com/luckyframework/shell-table.cr.git
Fetching https://github.com/jeromegn/slang.git
Fetching https://github.com/mosop/teeplate.git
Fetching https://github.com/crystal-loot/exception_page.git
Installing amber_router (0.3.0)
Installing cli (0.8.0)
Installing optarg (0.7.0)
Installing callback (0.7.1)
Installing string_inflection (0.2.1)
Installing compiled_license (0.1.3)
Installing kilt (0.4.0)
Installing liquid (0.3.1)
Installing inflector (0.1.8)
Installing micrate (0.3.3)
Installing db (0.6.0)
Installing pg (0.18.1)
Installing mysql (0.8.0)
Installing sqlite3 (0.13.0)
Installing redis (2.2.1)
Installing pool (0.2.3)
Installing shell-table (0.9.2 at 078a04ea58ead5203bb435a3b5fff448ddabaeea)
Installing slang (1.7.1)
Installing teeplate (0.8.0)
Installing exception_page (0.1.2)
Building amber in bin/amber
root@panel-staging:~/amber-0.30.0# make install       
root@panel-staging:~/amber-0.30.0# amber -v
Amber CLI (amberframework.org) - v0.30.0
root@panel-staging:~/amber-0.30.0# 

The CLI works as expected, my app even launches:

root@panel-staging:~/ulayerpanel# amber watch
08:31:33 Watch run  | (INFO) Building...
08:31:39 Watch run  | (INFO) Compiled in 00:00:06.495654892
08:31:39 Watch npm  | (INFO) Building...
[2019-08-14T20:31:40.035525000Z] main.INFO: Amber 0.30.0 serving application "Universial layer panel" at http://0.0.0.0:8080
[2019-08-14T20:31:40.035763000Z] main.INFO: Server started in development.
[2019-08-14T20:31:40.035853000Z] main.INFO: Startup Time 00:00:00.000332000
up to date in 4.309s
up to date in 4.154s
08:31:50 Watch npm  | (INFO) Starting...
npm WARN npm npm does not support Node.js v10.15.2
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8, 9.
npm WARN npm You can find the latest version at https://nodejs.org/

> ulayer@0.1.0 watch /root/ulayerpanel
> webpack -w --config config/webpack/development.js

webpack is watching the files…

So then the question is why didn't things work before and will this issue come right back up.

drujensen commented 5 years ago

I have a fresh install of Ubuntu 16.04. I installed crystal as a snap and downloaded amber stable. Did the make and sudo make install. I created a new amber project and verified everything is working.

elaine-jackson commented 5 years ago

We use Debian for staging and production at my organization. Ubuntu might have some extra libs available by default? Logged in as root so no sudo needed :P

Linux panel-staging.ulayer.net 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5+deb10u2 (2019-08-08) x86_64 GNU/Linux
elaine-jackson commented 5 years ago

At this point the issue is resolved but I would still be interested in knowing why it worked before and why it broke.

elorest commented 5 years ago

This issue only happens if you're running amber inside of an amber project without correct environment files. amber -v or other commands should work fine both outside of the amber project and inside of a correctly generated or new amber project.

@nsuchy can you confirm this on your end. That's the only way I've been able to replicate this.

elaine-jackson commented 5 years ago

It happened everywhere. Really wish I had backed up the amber binary for further analysis before reinstalling it.

drujensen commented 5 years ago

@nsuchy Can you look into your config/environments/development.yml file and confirm that it isn't corrupt? Also, can you confirm you are not using an encrypted version config/environments/development.enc?

@elorest how did you replicate the issue?

elorest commented 5 years ago

@drujensen I can replicate the issue by deleting or corrupting my environment files. The binary still works just fine outside of the project folder though in my case.

drujensen commented 5 years ago

@elorest I moved the environments directory but still can't replicate this issue. I get a different error:

Unhandled exception: no driver was registered for the schema "", did you maybe forget to require the database driver? (ArgumentError)

Is this what you are seeing or can you replicate the same error?

elaine-jackson commented 5 years ago

https://github.com/amberframework/amber/issues/1129#issuecomment-521826291 We run development (amber watch) in production currently as our solution is still in beta and being constantly changed. No encrypted environment variables atm.

drujensen commented 5 years ago

@nsuchy Is this still an issue?

elaine-jackson commented 5 years ago

I can’t reproduce, everything works flawlessly with my new dockerfile and aggressive commit locking.

Ref: https://github.com/ulayer/DockerCrystalAmber