lux-fw 0.5.36 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.version +1 -1
- data/bin/README.md +26 -13
- data/bin/cli/benchmark.rb +18 -0
- data/bin/cli/cerb.rb +90 -0
- data/bin/cli/config.rb +4 -11
- data/bin/cli/console.rb +72 -30
- data/bin/cli/eval.rb +5 -27
- data/bin/cli/generate.rb +9 -11
- data/bin/cli/get.rb +14 -6
- data/bin/cli/memory.rb +12 -0
- data/bin/cli/new.rb +2 -0
- data/bin/cli/secrets.rb +3 -31
- data/bin/cli/server.rb +28 -9
- data/bin/cli/stats.rb +26 -20
- data/bin/cli/template.rb +10 -0
- data/bin/generate_doc +168 -0
- data/bin/lux +73 -10
- data/lib/README.md +18 -8
- data/lib/common/crypt.rb +60 -9
- data/lib/common/string_base.rb +54 -15
- data/lib/common/struct_opts.rb +30 -0
- data/lib/common/time_difference.rb +75 -0
- data/lib/loader.rb +41 -0
- data/lib/lux/application/README.md +67 -105
- data/lib/lux/application/application.rb +87 -329
- data/lib/lux/application/lib/magic_routes.rb +22 -0
- data/lib/lux/application/lib/nav.rb +218 -99
- data/lib/lux/application/lib/render.rb +47 -67
- data/lib/lux/application/lib/routes.rb +242 -0
- data/lib/lux/application/lib/shared.rb +47 -0
- data/lib/lux/application/lux_adapter.rb +6 -0
- data/lib/lux/application/lux_config.rb +26 -0
- data/lib/lux/cache/Find Results +24 -0
- data/lib/lux/cache/README.md +28 -35
- data/lib/lux/cache/cache.rb +78 -26
- data/lib/lux/cache/lib/memcached_server.rb +36 -0
- data/lib/lux/cache/lib/memory_server.rb +44 -0
- data/lib/lux/cache/lib/null_server.rb +33 -0
- data/lib/lux/cache/lib/sqlite_server.rb +62 -0
- data/lib/lux/cache/lux_adapter.rb +19 -0
- data/lib/lux/config/config.rb +93 -144
- data/lib/lux/config/lux_adapter.rb +27 -0
- data/lib/lux/controller/README.md +67 -12
- data/lib/lux/controller/controller.rb +237 -187
- data/lib/lux/current/README.md +29 -10
- data/lib/lux/current/current.rb +166 -77
- data/lib/lux/current/lib/current.rb +6 -0
- data/lib/lux/current/lib/encrypt_params.rb +38 -36
- data/lib/lux/current/lib/session.rb +86 -65
- data/lib/lux/current/lux_adapter.rb +5 -0
- data/lib/lux/environment/README.md +24 -0
- data/lib/lux/environment/environment.rb +91 -0
- data/lib/lux/environment/lux_adapter.rb +13 -0
- data/lib/lux/error/README.md +18 -19
- data/lib/lux/error/error.rb +207 -152
- data/lib/lux/error/lux_adapter.rb +9 -0
- data/lib/lux/logger/README.md +45 -0
- data/lib/lux/logger/lux_adapter.rb +27 -0
- data/lib/lux/lux.rb +72 -129
- data/lib/lux/mailer/README.md +12 -5
- data/lib/lux/mailer/lux_config.rb +4 -0
- data/lib/lux/mailer/mailer.rb +81 -59
- data/lib/lux/plugin/README.md +19 -0
- data/lib/lux/plugin/lux_adapter.rb +8 -0
- data/lib/lux/plugin/plugin.rb +65 -0
- data/lib/lux/render/README.md +100 -0
- data/lib/lux/render/render.rb +12 -0
- data/lib/lux/response/README.md +57 -1
- data/lib/lux/response/lib/file.rb +87 -65
- data/lib/lux/response/lib/flash.rb +49 -34
- data/lib/lux/response/lib/header.rb +34 -33
- data/lib/lux/response/response.rb +252 -164
- data/lib/lux/template/helper.rb +130 -0
- data/lib/lux/template/inline_render_proxy.rb +31 -0
- data/lib/lux/template/lux_adapter.rb +5 -0
- data/lib/lux/template/template.rb +127 -0
- data/lib/lux-fw.rb +15 -33
- data/lib/overload/array.rb +33 -7
- data/lib/overload/blank.rb +8 -3
- data/lib/overload/boolean.rb +46 -0
- data/lib/overload/class.rb +28 -0
- data/lib/overload/dir.rb +117 -7
- data/lib/overload/file.rb +40 -5
- data/lib/overload/float.rb +38 -3
- data/lib/overload/hash.rb +81 -91
- data/lib/overload/integer.rb +15 -0
- data/lib/overload/json.rb +26 -0
- data/lib/overload/nil.rb +4 -8
- data/lib/overload/object.rb +91 -24
- data/lib/overload/pathname.rb +11 -0
- data/lib/overload/raise_variants.rb +26 -36
- data/lib/overload/string.rb +100 -27
- data/lib/overload/thread_simple.rb +100 -0
- data/lib/overload/time.rb +60 -38
- data/tasks/loader.rb +20 -7
- metadata +170 -169
- data/bin/.DS_Store +0 -0
- data/bin/build_gem +0 -77
- data/bin/cli/dbconsole.rb +0 -8
- data/bin/cli/routes.rb +0 -90
- data/lib/.DS_Store +0 -0
- data/lib/common/.DS_Store +0 -0
- data/lib/common/class_attributes.rb +0 -51
- data/lib/common/class_callbacks.rb +0 -47
- data/lib/common/free_struct.rb +0 -42
- data/lib/common/hash_with_indifferent_access.rb +0 -74
- data/lib/common/html_tag_builder.rb +0 -91
- data/lib/common/method_attr.rb +0 -69
- data/lib/common/url.rb +0 -191
- data/lib/lux/.DS_Store +0 -0
- data/lib/lux/README.md +0 -10
- data/lib/lux/cache/.DS_Store +0 -0
- data/lib/lux/cache/lib/memory.rb +0 -36
- data/lib/lux/cache/lib/null.rb +0 -21
- data/lib/lux/config/README.md +0 -63
- data/lib/lux/config/lib/plugin.rb +0 -65
- data/lib/lux/config/lib/secrets.rb +0 -48
- data/lib/lux/current/.DS_Store +0 -0
- data/lib/lux/delayed_job/.DS_Store +0 -0
- data/lib/lux/delayed_job/README.md +0 -3
- data/lib/lux/delayed_job/delayed_job.rb +0 -51
- data/lib/lux/delayed_job/lib/memory.rb +0 -16
- data/lib/lux/delayed_job/lib/nsq.rb +0 -3
- data/lib/lux/delayed_job/lib/postgre.rb +0 -6
- data/lib/lux/delayed_job/lib/redis.rb +0 -19
- data/lib/lux/event_bus/README.md +0 -36
- data/lib/lux/event_bus/event_bus.rb +0 -27
- data/lib/lux/view/README.md +0 -85
- data/lib/lux/view/cell.rb +0 -102
- data/lib/lux/view/helper.rb +0 -120
- data/lib/lux/view/lib/cell_helpers.rb +0 -29
- data/lib/lux/view/view.rb +0 -95
- data/lib/overload/it.rb +0 -29
- data/plugins/api/README.md +0 -49
- data/plugins/api/api.rb +0 -153
- data/plugins/api/lib/attr.rb +0 -31
- data/plugins/api/lib/dsl.rb +0 -52
- data/plugins/api/lib/error.rb +0 -3
- data/plugins/api/lib/model_api.rb +0 -203
- data/plugins/api/lib/response.rb +0 -85
- data/plugins/db/.DS_Store +0 -0
- data/plugins/db/README.md +0 -29
- data/plugins/db/auto_migrate/auto_migrate.rb +0 -268
- data/plugins/db/auto_migrate/db.rake +0 -15
- data/plugins/db/helpers/array_search.rb +0 -27
- data/plugins/db/helpers/before_save_filters.rb +0 -32
- data/plugins/db/helpers/composite_primary_keys.rb +0 -36
- data/plugins/db/helpers/core.rb +0 -94
- data/plugins/db/helpers/dataset_methods.rb +0 -138
- data/plugins/db/helpers/enums_plugin.rb +0 -52
- data/plugins/db/helpers/find_precache.rb +0 -31
- data/plugins/db/helpers/link_objects.rb +0 -84
- data/plugins/db/helpers/schema_checks.rb +0 -83
- data/plugins/db/helpers/typero_adapter.rb +0 -71
- data/plugins/db/logger/config.rb +0 -22
- data/plugins/db/logger/lux_response_adapter.rb +0 -10
- data/plugins/db/paginate/helper.rb +0 -32
- data/plugins/db/paginate/sequel_adapter.rb +0 -23
- data/plugins/exceptions/exceptions.rake +0 -43
- data/plugins/exceptions/simple_exception.rb +0 -64
- data/plugins/favicon/favicon.rb +0 -10
- data/plugins/html/README.md +0 -3
- data/plugins/html/html_form.rb +0 -118
- data/plugins/html/html_input.rb +0 -98
- data/plugins/html/html_menu.rb +0 -79
- data/plugins/html/input_types.rb +0 -346
- data/plugins/js_widgets/README.md +0 -5
- data/plugins/js_widgets/js/html_tag.coffee +0 -42
- data/plugins/js_widgets/js/widgets.coffee +0 -161
- data/plugins/js_widgets/js_widgets.rb +0 -15
- data/plugins/oauth/lib/facebook.rb +0 -35
- data/plugins/oauth/lib/github.rb +0 -38
- data/plugins/oauth/lib/google.rb +0 -41
- data/plugins/oauth/lib/linkedin.rb +0 -41
- data/plugins/oauth/lib/stackexchange.rb +0 -41
- data/plugins/oauth/lib/twitter.rb +0 -38
- data/plugins/oauth/oauth.rb +0 -42
- data/plugins/policy/policy.rb +0 -53
- data/tasks/nginx.rake +0 -23
- /data/lib/lux/{view/lib → mailer}/helper_modules.rb +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 26a5ad14f0ac275820255d8ac96fa2cf583d41bbac8ba84c3d49a6702844591f
|
|
4
|
+
data.tar.gz: f29c9147d212b63be1d78678f13a7e80988f70af77b7c37b8b6f5d0a9b8b6cb9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 684d38dede88154e2c8a553868a3d575406524b61e3d9160821b75c7c07ac54db0665365250f9e000cd3ba81f1bf35028734ca5bc391b32e65e5c71fdcb455d8
|
|
7
|
+
data.tar.gz: 711b5774c246d76d1d785c0c8da79fda930a68ec9f26989937cbfa26f60d6f320d6acb12f97d798957a294c50fc952c642702cd52a3ed4a4faf94cb0744ef3cd
|
data/.version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.6.2
|
data/bin/README.md
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
## Lux command line helper
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
You can run command `lux` in your app home folder.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
If you have `capistrano` or `mina` installed, you will see linked tasks here as well.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
$ lux
|
|
8
9
|
Commands:
|
|
9
10
|
lux config # Show server config
|
|
10
11
|
lux console # Start console
|
|
11
|
-
lux
|
|
12
|
+
lux erb # Parse and process *.erb templates
|
|
12
13
|
lux evaluate # Eval ruby string in context of Lux::Application
|
|
13
14
|
lux generate # Genrate models, cells, ...
|
|
14
15
|
lux get # Get single page by path "lux get /login"
|
|
@@ -18,16 +19,28 @@ Commands:
|
|
|
18
19
|
lux server # Start web server
|
|
19
20
|
lux stats # Print project stats
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
rake assets:
|
|
23
|
-
rake assets:
|
|
24
|
-
rake assets:install # Install all needed packages via yarn
|
|
25
|
-
rake assets:monitor # Monitor for file changes
|
|
26
|
-
rake assets:s3_upload # Upload assets to S3
|
|
27
|
-
rake assets:show # Show all files/data in manifest
|
|
22
|
+
Rake tasks:
|
|
23
|
+
rake assets:compile # Build and generate manifest
|
|
24
|
+
rake assets:install # Install example rollup.config.js, package.json and Procfile
|
|
28
25
|
rake db:am # Automigrate schema
|
|
26
|
+
rake db:console # Run PSQL console
|
|
27
|
+
rake db:create # Create database
|
|
28
|
+
rake db:drop # Drop database
|
|
29
|
+
rake db:dump[name] # Dump database backup
|
|
30
|
+
rake db:reset # Reset database (drop, create, auto migrate, seed)
|
|
31
|
+
rake db:restore[name] # Restore database backup
|
|
32
|
+
rake db:seed:gen # Create seeds from models
|
|
33
|
+
rake db:seed:load # Load seeds from db/seeds
|
|
34
|
+
rake docker:bash # Get bash to web server while docker-compose up
|
|
35
|
+
rake docker:build # Build docker image named stemical
|
|
36
|
+
rake docker:up # copose up
|
|
29
37
|
rake exceptions # Show exceptions
|
|
30
38
|
rake exceptions:clear # Clear all excpetions
|
|
39
|
+
rake images:reupload # Reupload images to S3
|
|
40
|
+
rake job:process # Process delayed job que tasks (NSQ, Faktory, ...)
|
|
41
|
+
rake job:start # Start delayed job que tasks Server (NSQ, Faktory, ...)
|
|
31
42
|
rake nginx:edit # Edit nginx config
|
|
32
43
|
rake nginx:generate # Generate sample config
|
|
44
|
+
rake start # Run local dev server
|
|
45
|
+
rake stat:goaccess # Goaccess access stat builder
|
|
33
46
|
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
def draw_load_speed what
|
|
2
|
+
time = Benchmark.realtime { yield }
|
|
3
|
+
puts "#{(time * 1000).to_i.to_s.rjust(4) } ms #{what}"
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
LuxCli.class_eval do
|
|
7
|
+
desc :benchmark, 'Benchmark app boot time'
|
|
8
|
+
def benchmark
|
|
9
|
+
require "benchmark"
|
|
10
|
+
|
|
11
|
+
def Kernel.require what
|
|
12
|
+
draw_load_speed(what) { super }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
draw_load_speed('./config/env.rb') { require './config/env'; puts ' --'}
|
|
16
|
+
draw_load_speed('./config/app.rb') { require './config/app' }
|
|
17
|
+
end
|
|
18
|
+
end
|
data/bin/cli/cerb.rb
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
class ErbParser
|
|
2
|
+
def self.parse file
|
|
3
|
+
new(file).parse_file
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
###
|
|
7
|
+
|
|
8
|
+
def initialize file
|
|
9
|
+
@file = file
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def import_css folder
|
|
13
|
+
Dir.find(folder, ext: [:css, :scss], invert: true) { '@import "%s";' }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def import_js folder
|
|
17
|
+
Dir.find(folder, ext: [:js, :coffee]) { 'import "%s";' }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def import_svelte folder:, prefix:
|
|
21
|
+
out = []
|
|
22
|
+
out.push ''
|
|
23
|
+
|
|
24
|
+
for file in Dir.find(folder, ext: [:svelte])
|
|
25
|
+
name = file.split('/').last.split('.').first.downcase
|
|
26
|
+
|
|
27
|
+
# cant call classify because we can have block in singular and plural
|
|
28
|
+
# block-post and block-posts and become SvelteBlockPost
|
|
29
|
+
klass = "Svelte_#{prefix}_#{name}".gsub(/[^\w]/, '_') #.classify
|
|
30
|
+
|
|
31
|
+
out.push "import #{klass} from './#{file}';";
|
|
32
|
+
out.push "Svelte.bind('#{prefix}-#{name.gsub('_', '-')}', #{klass});"
|
|
33
|
+
out.push ''
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
out.join($/)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def import folder
|
|
40
|
+
@file.include?('.js.') ? import_js(folder) : import_css(folder)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def parse_file
|
|
44
|
+
f = Pathname.new(@file)
|
|
45
|
+
data = f.read
|
|
46
|
+
# data = data.gsub(/\n<%/, '<%')
|
|
47
|
+
|
|
48
|
+
Dir.chdir f.dirname.to_s do
|
|
49
|
+
data = ERB.new(data).result(binding).gsub('././', './')
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
data
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
###
|
|
57
|
+
|
|
58
|
+
LuxCli.class_eval do
|
|
59
|
+
desc :cerb, 'Parse and process *.cerb templates (cli erb)'
|
|
60
|
+
def cerb file=nil
|
|
61
|
+
# To create server side template, create file ending in .erb
|
|
62
|
+
|
|
63
|
+
require './config/app'
|
|
64
|
+
|
|
65
|
+
if file
|
|
66
|
+
puts ErbParser.parse(file)
|
|
67
|
+
else
|
|
68
|
+
commmand = "find . -type file | grep --color=never \\.cerb$"
|
|
69
|
+
puts commmand.gray
|
|
70
|
+
files = `#{commmand}`
|
|
71
|
+
.split($/)
|
|
72
|
+
.reject { |f| f.include?('/views/') }
|
|
73
|
+
|
|
74
|
+
Cli.die 'No erb templates found' unless files.first
|
|
75
|
+
|
|
76
|
+
for local in files
|
|
77
|
+
next if local.include?('/.')
|
|
78
|
+
|
|
79
|
+
target = local.sub(/\.cerb$/, '')
|
|
80
|
+
|
|
81
|
+
out = []
|
|
82
|
+
out.push "/* Generated from #{local} */"
|
|
83
|
+
out.push ErbParser.parse(local)
|
|
84
|
+
File.write(target, out.join("\n\n"))
|
|
85
|
+
|
|
86
|
+
puts 'Assets compile: %s -> %s (%s)' % [local.green, target, File.size(target).to_filesize]
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
data/bin/cli/config.rb
CHANGED
|
@@ -2,12 +2,8 @@ LuxCli.class_eval do
|
|
|
2
2
|
desc :config, 'Show server config'
|
|
3
3
|
method_option :mode, aliases: '-m', default: 'production', desc: 'One of the server modes(dev, log, production)'
|
|
4
4
|
def config
|
|
5
|
-
|
|
5
|
+
require './config/app.rb'
|
|
6
6
|
|
|
7
|
-
require './config/application.rb'
|
|
8
|
-
|
|
9
|
-
puts 'LUX_MODE=%s (-m flag)' % ENV['LUX_MODE'].green
|
|
10
|
-
puts
|
|
11
7
|
puts 'config:'
|
|
12
8
|
Lux.config.sort.each do |key , value|
|
|
13
9
|
value = case value
|
|
@@ -20,25 +16,22 @@ LuxCli.class_eval do
|
|
|
20
16
|
when Proc
|
|
21
17
|
'proc { ... }'
|
|
22
18
|
else
|
|
23
|
-
value
|
|
19
|
+
value.inspect
|
|
24
20
|
end
|
|
25
21
|
|
|
26
|
-
name = ' Lux.config.%s' % key.white
|
|
22
|
+
name = ' Lux.config.%s' % key.to_s.white
|
|
27
23
|
print name.ljust(47)
|
|
28
24
|
puts '= %s' % value
|
|
29
25
|
end
|
|
30
26
|
|
|
31
27
|
puts
|
|
32
28
|
puts 'servers:'
|
|
33
|
-
puts ' Lux.
|
|
34
|
-
puts ' Lux.cache.server = %s' % Lux.cache.server
|
|
29
|
+
puts ' Lux.cache.server = %s' % Lux.cache.server
|
|
35
30
|
|
|
36
31
|
puts
|
|
37
32
|
puts 'plugins:'
|
|
38
33
|
Lux.plugin.keys.each do |key|
|
|
39
34
|
puts ' Lux.plugin.%s - %s' % [key.ljust(22).white, Lux.plugin.get(key).folder]
|
|
40
35
|
end
|
|
41
|
-
|
|
42
|
-
Object.class_callback :info, Lux::Application
|
|
43
36
|
end
|
|
44
37
|
end
|
data/bin/cli/console.rb
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
require 'pry'
|
|
2
|
-
|
|
3
1
|
class Object
|
|
4
2
|
def cp data
|
|
5
3
|
data = JSON.pretty_generate(data.to_hash) if data.respond_to?(:to_hash)
|
|
@@ -7,32 +5,52 @@ class Object
|
|
|
7
5
|
'copied'
|
|
8
6
|
end
|
|
9
7
|
|
|
8
|
+
# reload code changes
|
|
9
|
+
def reload!
|
|
10
|
+
Lux.config.on_reload_code.call :cli
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# prettify last sql command
|
|
14
|
+
def sql! sql=nil
|
|
15
|
+
require 'niceql'
|
|
16
|
+
puts Niceql::Prettifier.prettify_sql sql || $last_sql_command
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def c
|
|
20
|
+
Lux.error.clear_screen
|
|
21
|
+
end
|
|
22
|
+
|
|
10
23
|
# show method info
|
|
11
|
-
#
|
|
12
|
-
def
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
24
|
+
# m User, :secure_hash
|
|
25
|
+
def m object, mtd = nil
|
|
26
|
+
if mtd
|
|
27
|
+
info = object.method(mtd)
|
|
28
|
+
puts info.source_location.or([]).join(':').yellow
|
|
29
|
+
puts '-'
|
|
30
|
+
puts info.source
|
|
31
|
+
nil
|
|
32
|
+
else
|
|
33
|
+
if object.respond_to?(:superclass)
|
|
34
|
+
object.methods - object.superclass.methods
|
|
35
|
+
else
|
|
36
|
+
object.methods - object.class.superclass.methods
|
|
37
|
+
end
|
|
38
|
+
end
|
|
19
39
|
end
|
|
20
40
|
end
|
|
21
41
|
|
|
22
|
-
|
|
23
42
|
ARGV[0] = 'console' if ARGV[0] == 'c'
|
|
24
43
|
|
|
25
44
|
LuxCli.class_eval do
|
|
26
45
|
desc :console, 'Start console'
|
|
27
|
-
def console
|
|
28
|
-
|
|
46
|
+
def console *args
|
|
47
|
+
ENV['LUX_ENV'] = 'clre'
|
|
29
48
|
|
|
30
|
-
require '
|
|
31
|
-
require '
|
|
32
|
-
require './config/application'
|
|
49
|
+
require 'amazing_print'
|
|
50
|
+
require './config/app'
|
|
33
51
|
|
|
34
|
-
|
|
35
|
-
Lux.
|
|
52
|
+
# create mock session
|
|
53
|
+
Lux::Current.new '/'
|
|
36
54
|
|
|
37
55
|
if File.exist?('./config/console.rb')
|
|
38
56
|
puts '* loading ./config/console.rb'
|
|
@@ -41,21 +59,45 @@ LuxCli.class_eval do
|
|
|
41
59
|
puts '* ./config/console.rb not found'
|
|
42
60
|
end
|
|
43
61
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
Pry.print = proc
|
|
47
|
-
|
|
48
|
-
|
|
62
|
+
Pry.pager = false
|
|
63
|
+
|
|
64
|
+
Pry.config.print = proc do |output, value|
|
|
65
|
+
if value.is_a?(Method)
|
|
66
|
+
output.puts value.inspect
|
|
67
|
+
elsif value.is_a?(String)
|
|
68
|
+
output.puts value
|
|
49
69
|
else
|
|
50
|
-
|
|
70
|
+
ap value
|
|
51
71
|
end
|
|
72
|
+
end
|
|
52
73
|
|
|
53
|
-
|
|
54
|
-
|
|
74
|
+
if args.first
|
|
75
|
+
command = args.join(' ')
|
|
55
76
|
|
|
56
|
-
|
|
57
|
-
|
|
77
|
+
if command.ends_with?('.rb')
|
|
78
|
+
puts 'Load : %s' % command.light_blue
|
|
79
|
+
load command
|
|
80
|
+
else
|
|
81
|
+
puts 'Command : %s' % command.light_blue
|
|
82
|
+
data = eval command
|
|
83
|
+
puts '-'
|
|
84
|
+
Pry.config.print.call $stdout, data
|
|
85
|
+
end
|
|
86
|
+
else
|
|
87
|
+
# custom history loader
|
|
88
|
+
history = Pathname.new Lux.root.join('./.pry_history')
|
|
89
|
+
|
|
90
|
+
Thread.new do
|
|
91
|
+
# load in started pry session
|
|
92
|
+
sleep 0.5
|
|
93
|
+
if history.exist?
|
|
94
|
+
lines = history.read.split($/).uniq - ['exit']
|
|
95
|
+
lines.each {|l| Pry.history.push(l) }
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
Pry.start
|
|
58
99
|
|
|
59
|
-
|
|
100
|
+
history.write Pry.history.to_a.uniq.last(100).join($/)
|
|
101
|
+
end
|
|
60
102
|
end
|
|
61
|
-
end
|
|
103
|
+
end
|
data/bin/cli/eval.rb
CHANGED
|
@@ -1,32 +1,10 @@
|
|
|
1
|
+
ARGV[0] = 'eval' if ARGV[0] == 'e'
|
|
2
|
+
|
|
1
3
|
LuxCli.class_eval do
|
|
2
4
|
desc :evaluate, 'Eval ruby string in context of Lux::Application'
|
|
3
5
|
def evaluate *args
|
|
4
|
-
require '
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if File.exist?('./config/console.rb')
|
|
9
|
-
puts '* loading ./config/console.rb'
|
|
10
|
-
load './config/console.rb'
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
command = ARGV.drop(1).join('; ')
|
|
14
|
-
|
|
15
|
-
puts 'Command : %s' % command.light_blue
|
|
16
|
-
|
|
17
|
-
data = eval command
|
|
18
|
-
|
|
19
|
-
puts '-'
|
|
20
|
-
puts 'Class : %s' % data.class
|
|
21
|
-
puts '-'
|
|
22
|
-
|
|
23
|
-
if data.is_a?(String) && data.include?('</body>')
|
|
24
|
-
require 'nokogiri'
|
|
25
|
-
puts Nokogiri::XML(data, &:noblanks)
|
|
26
|
-
else
|
|
27
|
-
ap data
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
exit
|
|
6
|
+
require 'amazing_print'
|
|
7
|
+
require './config/app'
|
|
8
|
+
console *args
|
|
31
9
|
end
|
|
32
10
|
end
|
data/bin/cli/generate.rb
CHANGED
|
@@ -8,19 +8,16 @@ module LuxGenerate
|
|
|
8
8
|
extend self
|
|
9
9
|
|
|
10
10
|
def generate object=nil, objects=nil
|
|
11
|
-
unless object
|
|
12
|
-
puts "./generate [object singular]".red
|
|
13
|
-
exit
|
|
14
|
-
end
|
|
11
|
+
Cli.die "./generate [object singular]" unless object
|
|
15
12
|
|
|
16
13
|
template_dir = 'config/templates'
|
|
17
|
-
|
|
14
|
+
Cli.die "Lux::Template dir #{template_dir} is not accessible" unless Dir.exist?(template_dir)
|
|
18
15
|
|
|
19
16
|
tpl_desc = {
|
|
20
17
|
p:'api',
|
|
21
18
|
m:'model',
|
|
22
19
|
a:'admin',
|
|
23
|
-
c:'
|
|
20
|
+
c:'controller',
|
|
24
21
|
v:'view'
|
|
25
22
|
}
|
|
26
23
|
|
|
@@ -34,6 +31,7 @@ module LuxGenerate
|
|
|
34
31
|
object = @object
|
|
35
32
|
objects = @objects
|
|
36
33
|
klass = @object.classify
|
|
34
|
+
klasses = klass.pluralize
|
|
37
35
|
|
|
38
36
|
data.gsub(/\{\{([^\}]+)\}\}/) { eval $1 }
|
|
39
37
|
end
|
|
@@ -57,8 +55,8 @@ module LuxGenerate
|
|
|
57
55
|
templates[type].push [path, data]
|
|
58
56
|
end
|
|
59
57
|
|
|
60
|
-
# # puts "Lux::
|
|
61
|
-
puts "
|
|
58
|
+
# # puts "Lux::Templates : #{templates.keys.sort.map{ |el| tpl_desc[el.to_sym] ? tpl_desc[el.to_sym].sub(el, el.upcase.yellow) : el.yellow }.join(', ')}"
|
|
59
|
+
puts "Templates : #{templates.keys.map{ |el| "#{tpl_desc[el.to_sym]}(#{el.yellow})" }.join(', ')}"
|
|
62
60
|
print "Execute : "
|
|
63
61
|
|
|
64
62
|
parse_templates = STDIN.gets.chomp
|
|
@@ -67,14 +65,14 @@ module LuxGenerate
|
|
|
67
65
|
next unless parse_templates.index(type)
|
|
68
66
|
for el in templates[type]
|
|
69
67
|
file, data = *el
|
|
70
|
-
if File.
|
|
68
|
+
if File.exist?(file)
|
|
71
69
|
print 'exists'.yellow.rjust(20)
|
|
72
70
|
else
|
|
73
71
|
FileUtils.mkdir_p(file.sub(/\/[^\/]+$/,'')) rescue false
|
|
74
72
|
File.open(file, 'w') { |f| f.write(data) }
|
|
75
73
|
print 'created'.green.rjust(20)
|
|
76
74
|
end
|
|
77
|
-
puts "
|
|
75
|
+
puts " #{file}"
|
|
78
76
|
end
|
|
79
77
|
end
|
|
80
78
|
end
|
|
@@ -85,4 +83,4 @@ LuxCli.class_eval do
|
|
|
85
83
|
def generate object, objects=nil
|
|
86
84
|
LuxGenerate.generate object, objects
|
|
87
85
|
end
|
|
88
|
-
end
|
|
86
|
+
end
|
data/bin/cli/get.rb
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
LuxCli.class_eval do
|
|
2
2
|
desc :get, 'Get single page by path "lux get /login"'
|
|
3
|
-
method_option :
|
|
3
|
+
method_option :body, desc: 'Show body', type: :boolean, aliases: "-b", default: false
|
|
4
|
+
method_option :info, desc: 'Show info', type: :boolean, aliases: "-i", default: false
|
|
5
|
+
method_option :type, desc: 'Request type', type: :boolean, aliases: "-i", default: false
|
|
4
6
|
def get path
|
|
5
|
-
require './config/
|
|
7
|
+
require './config/app'
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
Cli.die "Use\n -b to show body\n -i to show info" unless options[:body] || options[:info]
|
|
10
|
+
|
|
11
|
+
data = Lux.app.new(path).render
|
|
12
|
+
|
|
13
|
+
if options[:body]
|
|
14
|
+
puts data[:body]
|
|
15
|
+
elsif options[:info]
|
|
16
|
+
data[:body] = 'BODY lenght: %s kB' % (data[:body].length.to_f/1024).round(1)
|
|
17
|
+
ap data.to_h
|
|
18
|
+
end
|
|
11
19
|
end
|
|
12
20
|
end
|
data/bin/cli/memory.rb
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
LuxCli.class_eval do
|
|
2
|
+
desc :memory, 'Show memory usage'
|
|
3
|
+
def memory
|
|
4
|
+
require 'memory_profiler'
|
|
5
|
+
|
|
6
|
+
report = MemoryProfiler.report do
|
|
7
|
+
require './config/app'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
report.pretty_print retained_strings: 5, allocated_strings: 5#(to_file: "profile.txt")
|
|
11
|
+
end
|
|
12
|
+
end
|
data/bin/cli/new.rb
CHANGED
data/bin/cli/secrets.rb
CHANGED
|
@@ -3,38 +3,10 @@ LuxCli.class_eval do
|
|
|
3
3
|
def secrets
|
|
4
4
|
require 'lux-fw'
|
|
5
5
|
|
|
6
|
-
@secrets = Lux::Config::Secrets.new
|
|
7
|
-
|
|
8
|
-
# create secret from template (config/secrets.enc)
|
|
9
|
-
# or read file (tmp/secrets.yaml) if one exist
|
|
10
|
-
unless @secrets.read_file.exist?
|
|
11
|
-
if @secrets.secret_file.exist?
|
|
12
|
-
@secrets.read_file.write @secrets.encoded_data
|
|
13
|
-
Cli.info 'CREATED read file %s from secrets file' % @secrets.read_file
|
|
14
|
-
# encoded = JWT.encode @secrets.read_file.read, @secrets.secret, @secrets.strength
|
|
15
|
-
# @secrets.secret_file.write encoded
|
|
16
|
-
# Cli.info 'Written secret file %s' % @secrets.secret_file
|
|
17
|
-
else
|
|
18
|
-
data = "version: 1\n\n"
|
|
19
|
-
data += %w[shared production development].map{ |it| "%s:\n key: value" % it }.join("\n\n")
|
|
20
|
-
@secrets.read_file.write data
|
|
21
|
-
Cli.info '@Secrets file "%s" created from template.' % @secrets.read_file
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# edit ecrets file
|
|
26
|
-
vim = `which vim`.chomp.or('vi')
|
|
27
|
-
system '%s %s' % [vim, @secrets.read_file]
|
|
28
|
-
|
|
29
|
-
# write secrets file if needed
|
|
30
|
-
if !@secrets.secret_file.exist? || (@secrets.secret_file.ctime < @secrets.read_file.ctime)
|
|
31
|
-
@secrets.write
|
|
32
|
-
Cli.info 'Written secret file %s' % @secrets.secret_file
|
|
33
|
-
end
|
|
34
|
-
|
|
35
6
|
# show secret for easier debuging and dump secrets
|
|
36
|
-
Cli.info 'secret: "%s"' % @secrets.secret
|
|
37
7
|
Cli.info 'dump for ENV %s' % Lux.env
|
|
38
|
-
|
|
8
|
+
|
|
9
|
+
Cli.info 'dump for secrets'
|
|
10
|
+
puts Lux.secrets.to_h.to_jsonp(true)
|
|
39
11
|
end
|
|
40
12
|
end
|
data/bin/cli/server.rb
CHANGED
|
@@ -1,24 +1,43 @@
|
|
|
1
|
+
# RACK_ENV = test dev/development prod/production
|
|
2
|
+
# live acts as production. RACK_ENV=live; Lux.env.prod? # true
|
|
3
|
+
# LUX_ENV = clre - add any for dev env options. Emit all -> production settings
|
|
4
|
+
# Lux.env.no_cache? # true
|
|
5
|
+
# Lux.env.screen_log? # true
|
|
6
|
+
# Lux.env.reload_code? # true
|
|
7
|
+
# Lux.env.reload_code? # true
|
|
8
|
+
|
|
9
|
+
# no code reload with logging
|
|
10
|
+
# lux s -c
|
|
11
|
+
|
|
1
12
|
if ARGV[0] == 's'
|
|
2
13
|
ARGV[0] = 'server'
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# lux ss -> lux -opt le (only log and errors dump, no cacing and code reload)
|
|
17
|
+
if ARGV[0] == 'ss'
|
|
18
|
+
ARGV[0] = 'server'
|
|
19
|
+
ARGV[1] = '-o'
|
|
20
|
+
ARGV[2] = 'le'
|
|
6
21
|
end
|
|
7
22
|
|
|
8
23
|
LuxCli.class_eval do
|
|
9
24
|
desc :server, 'Start web server'
|
|
10
25
|
method_option :port, aliases: '-p', default: 3000, desc: 'Port to run app on', type: :numeric
|
|
11
|
-
method_option :
|
|
12
|
-
method_option :env, aliases: '-e', default: 'd', desc: 'Environemnt, only first chart counts'
|
|
26
|
+
method_option :env, aliases: '-e', desc: 'Environemnt, only first chart counts (%s)'
|
|
13
27
|
method_option :rerun, aliases: '-r', default: false, desc: 'rerun app on every file chenge', type: :boolean
|
|
28
|
+
method_option :opt, aliases: '-o', default: 'clre', desc: 'lux options (clre - cache, screen log, code reload, errors)', type: :string
|
|
14
29
|
def server
|
|
15
|
-
|
|
16
|
-
|
|
30
|
+
trap("SIGINT") { Cli.die 'ctrl+c exit' }
|
|
31
|
+
|
|
32
|
+
ENV['RACK_ENV'] = options[:env] if options[:env]
|
|
33
|
+
ENV['LUX_ENV'] = options[:opt]
|
|
34
|
+
|
|
35
|
+
command = "RACK_ENV=#{ENV['RACK_ENV']} LUX_ENV=#{ENV['LUX_ENV']} bundle exec puma -p #{options[:port]}"
|
|
17
36
|
|
|
18
37
|
if options[:rerun]
|
|
19
|
-
Cli.run "#{
|
|
38
|
+
Cli.run "find #{LUX_ROOT} . -name *.rb | entr -r #{command}"
|
|
20
39
|
else
|
|
21
|
-
Cli.run
|
|
40
|
+
Cli.run command
|
|
22
41
|
end
|
|
23
42
|
end
|
|
24
43
|
end
|