lux-fw 0.5.36 → 0.6.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|