nali 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,7 +5,7 @@ Nali.extend Collection:
5
5
  length: 0
6
6
 
7
7
  cloning: ->
8
- @subscribeTo @Model, "create.#{ @model.sysname.lowercase() }", @onModelCreated
8
+ @subscribeTo @Model, "create.#{ @model._name.lowercase() }", @onModelCreated
9
9
  @adaptations = []
10
10
  @ordering = {}
11
11
  @adaptCollection()
@@ -16,7 +16,7 @@ Nali.extend Collection:
16
16
  @
17
17
 
18
18
  onModelUpdated: ( model ) ->
19
- @remove model unless model.isCorrect @filters
19
+ if model.isCorrect @filters then @reorder() else @remove model
20
20
  @
21
21
 
22
22
  onModelDestroyed: ( model ) ->
@@ -78,16 +78,19 @@ Nali.extend Collection:
78
78
  if @ordering.by?
79
79
  clearTimeout @ordering.timer if @ordering.timer?
80
80
  @ordering.timer = setTimeout =>
81
- @sort ( one, two ) =>
82
- one = one[ @ordering.by ]
83
- two = two[ @ordering.by ]
84
- if @ordering.as is 'number'
85
- one = parseFloat one
86
- two = parseFloat two
87
- if @ordering.as is 'string'
88
- one = one + ''
89
- two = two + ''
90
- ( if one > two then 1 else if one < two then -1 else 0 ) * ( if @ordering.desc then -1 else 1 )
81
+ if typeof @ordering.by is 'function'
82
+ @sort @ordering.by
83
+ else
84
+ @sort ( one, two ) =>
85
+ one = one[ @ordering.by ]
86
+ two = two[ @ordering.by ]
87
+ if @ordering.as is 'number'
88
+ one = + one
89
+ two = + two
90
+ if @ordering.as is 'string'
91
+ one = '' + one
92
+ two = '' + two
93
+ ( if one > two then 1 else if one < two then -1 else 0 ) * ( if @ordering.desc then -1 else 1 )
91
94
  @orderViews()
92
95
  delete @ordering.timer
93
96
  , 5
@@ -1,9 +1,9 @@
1
1
  Nali.extend Controller:
2
2
 
3
3
  extension: ->
4
- if @sysname isnt 'Controller'
4
+ if @_name isnt 'Controller'
5
5
  @prepareActions()
6
- @modelSysname = @sysname.replace /s$/, ''
6
+ @modelSysname = @_name.replace /s$/, ''
7
7
  @
8
8
 
9
9
  actions: {}
@@ -70,7 +70,7 @@ Nali.extend Controller:
70
70
 
71
71
  changeUrl: ( action, filters ) ->
72
72
  params = ( value for own key, value of filters )
73
- url = @sysname.lowercase().replace /s$/, ''
73
+ url = @_name.lowercase().replace /s$/, ''
74
74
  url += if action is @actions.default then '' else '/' + action
75
75
  url += '/' + params.join '/' if params.length
76
76
  @Router.setUrl url
@@ -1,8 +1,8 @@
1
1
  Nali.extend Model:
2
2
 
3
3
  extension: ->
4
- if @sysname isnt 'Model'
5
- @table = @tables[ @sysname ] ?= []
4
+ if @_name isnt 'Model'
5
+ @table = @tables[ @_name ] ?= []
6
6
  @table.index = {}
7
7
  @adapt()
8
8
  @
@@ -53,20 +53,20 @@ Nali.extend Model:
53
53
  save: ( success, failure ) ->
54
54
  # отправляет на сервер запрос на сохранение модели, вызывает success в случае успеха и failure при неудаче
55
55
  if @isValid()
56
- @query "#{ @sysname.lowercase() }s.save", @attributes,
56
+ @query "#{ @_name.lowercase() }s.save", @attributes,
57
57
  ( { attributes, created, updated } ) =>
58
58
  @update( attributes, updated, created ).write()
59
59
  success? @
60
60
  else failure? @
61
61
  @
62
62
 
63
- sync: ( { sysname, attributes, created, updated, destroyed } ) ->
63
+ sync: ( { _name, attributes, created, updated, destroyed } ) ->
64
64
  # синхронизирует пришедшую с сервера модель с локальной, либо создает новую
65
- if model = @extensions[ sysname ].find attributes.id
65
+ if model = @extensions[ _name ].find attributes.id
66
66
  if destroyed then model.remove()
67
67
  else model.update attributes, updated, created
68
68
  else
69
- model = @extensions[ sysname ].build attributes
69
+ model = @extensions[ _name ].build attributes
70
70
  model.updated = updated
71
71
  model.created = created
72
72
  model.write()
@@ -74,7 +74,7 @@ Nali.extend Model:
74
74
 
75
75
  select: ( filters, success, failure ) ->
76
76
  # отправляет на сервер запрос на выборку моделей по фильтру, вызывает success в случае успеха и failure при неудаче
77
- @query @sysname.lowercase() + 's.select', filters, success, failure if Object.keys( filters ).length
77
+ @query @_name.lowercase() + 's.select', filters, success, failure if Object.keys( filters ).length
78
78
 
79
79
  write: ->
80
80
  # добавляет модель во временную таблицу, генерирует событие create
@@ -82,7 +82,7 @@ Nali.extend Model:
82
82
  @table.push @
83
83
  @table.index[ @id ] = @
84
84
  @onCreate?()
85
- @Model.trigger "create.#{ @sysname.lowercase() }", @
85
+ @Model.trigger "create.#{ @_name.lowercase() }", @
86
86
  @Model.runNotices()
87
87
  @
88
88
 
@@ -128,7 +128,7 @@ Nali.extend Model:
128
128
 
129
129
  destroy: ( success, failure ) ->
130
130
  # отправляет на сервер запрос на удаление модели, вызывает success в случае успеха и failure при неудаче
131
- @query @sysname.lowercase() + 's.destroy', @attributes, success, failure
131
+ @query @_name.lowercase() + 's.destroy', @attributes, success, failure
132
132
 
133
133
  # поиск моделей
134
134
 
@@ -164,7 +164,7 @@ Nali.extend Model:
164
164
  # т.е. строка '123' становится числом 123, '123.5' становится 123.5, а '123abc' остается строкой
165
165
  if typeof value is 'string'
166
166
  value = "#{ value }".trim()
167
- if value is ( ( correct = parseFloat( value ) ) + '' ) then correct else value
167
+ if value is ( ( correct = + value ) + '' ) then correct else value
168
168
  else value
169
169
 
170
170
  isCorrect: ( filters = {} ) ->
@@ -179,11 +179,11 @@ Nali.extend Model:
179
179
  if filter instanceof RegExp
180
180
  filter.test attribute
181
181
  else if typeof filter is 'string'
182
- attribute.toString() is filter
182
+ '' + attribute is filter
183
183
  else if typeof filter is 'number'
184
- parseInt( attribute ) is filter
184
+ + attribute is filter
185
185
  else if filter instanceof Array
186
- attribute.toString() in filter or parseInt( attribute ) in filter
186
+ '' + attribute in filter or + attribute in filter
187
187
  else false
188
188
 
189
189
  # работа со связями
@@ -206,7 +206,7 @@ Nali.extend Model:
206
206
  # устанавливает геттер типа has_one возвращающий связанную модель
207
207
  @getter name, =>
208
208
  delete @[ name ]
209
- ( filters = {} )[ "#{ @sysname.lowercase() }_id" ] = @id
209
+ ( filters = {} )[ "#{ @_name.lowercase() }_id" ] = @id
210
210
  relation = @Model.extensions[ name.capitalize() ].where filters
211
211
  @getter name, => relation.first()
212
212
  relation.first()
@@ -216,7 +216,7 @@ Nali.extend Model:
216
216
  # устанавливает геттер типа has_many возвращающий коллекцию связанных моделей
217
217
  @getter name, =>
218
218
  delete @[ name ]
219
- ( filters = {} )[ "#{ @sysname.lowercase() }_id" ] = @id
219
+ ( filters = {} )[ "#{ @_name.lowercase() }_id" ] = @id
220
220
  @[ name ] = @Model.extensions[ name[ ...-1 ].capitalize() ].where filters
221
221
  @
222
222
 
@@ -224,7 +224,7 @@ Nali.extend Model:
224
224
 
225
225
  view: ( name ) ->
226
226
  # приводит сокращенное имя к полному и возвращает объект вида, либо новый, либо ранее созданный
227
- name = @sysname + name.camelcase().capitalize() unless @View.extensions[ name ]?
227
+ name = @_name + name.camelcase().capitalize() unless @View.extensions[ name ]?
228
228
  unless ( view = ( @views ?= {} )[ name ] )?
229
229
  if ( view = @View.extensions[ name ] )?
230
230
  view = ( ( @views ?= {} )[ name ] = view.clone( model: @ ) )
@@ -1,6 +1,6 @@
1
1
  window.Nali =
2
2
 
3
- sysname: 'Nali'
3
+ _name: 'Nali'
4
4
  extensions: {}
5
5
 
6
6
  starting: ->
@@ -10,22 +10,24 @@ window.Nali =
10
10
  @starting.call extension
11
11
  @
12
12
 
13
- extend: ( obj ) ->
14
- sysname = Object.keys( obj )[0]
15
- @[ sysname ] = @extensions[ sysname ] = obj[ sysname ]
16
- @[ sysname ].extensions = {}
17
- @[ sysname ].sysname = sysname
18
- @[ sysname ].__proto__ = @
19
- @[ sysname ] :: = @
20
- @[ sysname ].initObservation()
21
- @[ sysname ]
13
+ extend: ( params ) ->
14
+ for name, param of params
15
+ param._name = name
16
+ @[ name ] = @extensions[ name ] = @child param
17
+ @[ name ].extensions = {}
18
+ @[ name ].initObservation()
22
19
 
23
- clone: ( obj = {} ) ->
24
- obj.__proto__ = @
25
- obj :: = @
26
- obj.initObservation()
20
+ clone: ( params = {} ) ->
21
+ obj = @child params
27
22
  obj.cloning?()
28
23
  obj
24
+
25
+ child: ( params ) ->
26
+ obj = Object.create @
27
+ obj :: = @
28
+ obj[ name ] = value for name, value of params
29
+ obj.initObservation()
30
+ obj
29
31
 
30
32
  expand: ( obj ) ->
31
33
  if obj instanceof Object then @[ key ] = value for own key, value of obj
@@ -42,8 +44,8 @@ window.Nali =
42
44
  return false unless @::?
43
45
  return true if @:: is parent
44
46
  else
45
- return false unless @::?.sysname?
46
- return true if @::sysname is parent
47
+ return false unless @::?._name?
48
+ return true if @::_name is parent
47
49
  @::childOf parent
48
50
 
49
51
  runExtensions: ( context = @ ) ->
@@ -1,7 +1,7 @@
1
1
  Nali.extend View:
2
2
 
3
3
  extension: ->
4
- if @sysname isnt 'View'
4
+ if @_name isnt 'View'
5
5
  @parseTemplate()
6
6
  @parseEvents()
7
7
  @
@@ -25,33 +25,35 @@ Nali.extend View:
25
25
  else @Application.htmlContainer
26
26
 
27
27
  draw: ->
28
- assistant.call @ for assistant in @assistants
28
+ @runAssistants 'draw'
29
29
  @onDraw?()
30
30
  @
31
31
 
32
32
  show: ( insertTo = @insertTo() ) ->
33
33
  @prepareElement().draw().bindEvents()
34
34
  unless @visible
35
- @model.beforeShow?[ @sysname ]?.call @model
35
+ @model.beforeShow?[ @_name ]?.call @model
36
+ @runAssistants 'show'
36
37
  @subscribeTo @model, 'update', @onSourceUpdated
37
38
  @subscribeTo @model, 'destroy', @onSourceDestroyed
38
39
  @element.appendTo insertTo
39
40
  @showRelations()
40
41
  setTimeout ( => @onShow() ), 5 if @onShow?
41
42
  @visible = true
42
- @model.afterShow?[ @sysname ]?.call @model
43
+ @model.afterShow?[ @_name ]?.call @model
43
44
  @
44
45
 
45
46
  hide: ( delay = 0 ) ->
46
47
  if @visible
47
- @model.beforeHide?[ @sysname ]?.call @model
48
+ @model.beforeHide?[ @_name ]?.call @model
48
49
  @hideDelay = delay if typeof( delay ) is 'number' and delay
49
50
  @onHide?()
50
51
  @trigger 'hide'
52
+ @runAssistants 'hide'
51
53
  @hideElement()
52
54
  @destroyObservation()
53
55
  @visible = false
54
- @model.afterHide?[ @sysname ]?.call @model
56
+ @model.afterHide?[ @_name ]?.call @model
55
57
  @
56
58
 
57
59
  hideElement: ->
@@ -152,15 +154,15 @@ Nali.extend View:
152
154
  node
153
155
 
154
156
  parseTemplate: ->
155
- if container = document.querySelector '#' + @sysname.underscore()
157
+ if container = document.querySelector '#' + @_name.underscore()
156
158
  @template = container.innerHTML.trim().replace( /\s+/g, ' ' )
157
159
  .replace( /({\s*\+.+?\s*})/g, ' <assist>$1</assist>' )
158
160
  .replace( /{\s*yield\s*}/g, '<div class="yield"></div>' )
159
- unless RegExp( "^<[^>]+" + @sysname ).test @template
160
- @template = "<div class=\"#{ @sysname }\">#{ @template }</div>"
161
+ unless RegExp( "^<[^>]+" + @_name ).test @template
162
+ @template = "<div class=\"#{ @_name }\">#{ @template }</div>"
161
163
  @parseRelations()
162
164
  container.parentNode.removeChild container
163
- else console.warn 'Template %s not exists', @sysname
165
+ else console.warn 'Template %s not exists', @_name
164
166
  @
165
167
 
166
168
  parseRelations: ->
@@ -196,18 +198,22 @@ Nali.extend View:
196
198
  @
197
199
 
198
200
  addAssistants: ->
199
- @assistants = []
201
+ @assistants = show: [], draw: [], hide: []
200
202
  @[ "add#{ type }Assistant" ] @getNode nodepath for { nodepath, type } in @assistantsMap
201
203
  @
204
+
205
+ runAssistants: ( type ) ->
206
+ assistant.call @ for assistant in @assistants[ type ]
207
+ @
202
208
 
203
209
  addTextAssistant: ( node ) ->
204
210
  initialValue = node.textContent
205
- @assistants.push -> node.textContent = @analize initialValue
211
+ @assistants[ 'draw' ].push -> node.textContent = @analize initialValue
206
212
  @
207
213
 
208
214
  addAttrAssistant: ( node ) ->
209
215
  initialValue = node.value
210
- @assistants.push -> node.value = @analize initialValue
216
+ @assistants[ 'draw' ].push -> node.value = @analize initialValue
211
217
  @
212
218
 
213
219
  addHtmlAssistant: ( node ) ->
@@ -216,7 +222,7 @@ Nali.extend View:
216
222
  index = Array::indexOf.call parent.childNodes, node
217
223
  after = parent.childNodes[ index - 1 ] or null
218
224
  before = parent.childNodes[ index + 1 ] or null
219
- @assistants.push ->
225
+ @assistants[ 'draw' ].push ->
220
226
  start = if after then Array::indexOf.call( parent.childNodes, after ) + 1 else 0
221
227
  end = if before then Array::indexOf.call parent.childNodes, before else parent.childNodes.length
222
228
  parent.removeChild node for node in Array::slice.call( parent.childNodes, start, end )
@@ -226,42 +232,39 @@ Nali.extend View:
226
232
  addFormAssistant: ( node ) ->
227
233
  if bind = @analizeChain node.attributes.removeNamedItem( 'bind' ).value
228
234
  [ source, property ] = bind
229
- if node.type in [ 'text', 'textarea']
230
- node.value = source[ property ]
231
-
232
- @_( node ).on 'change', =>
233
- ( params = {} )[ property ] = node.value
234
- source.update params
235
- source.save() unless node.form?
236
-
237
- source.subscribe @, "update.#{ property }", =>
238
- node.value = source[ property ] if node.value isnt source[ property ]
239
-
240
- if node.type in [ 'checkbox', 'radio' ]
241
- node.checked = source[ property ] + '' is node.value
242
-
243
- @_( node ).on 'change', =>
244
- if node.checked is true
245
- ( params = {} )[ property ] = node.value
246
- source.update params
247
- source.save() unless node.form?
248
-
249
- source.subscribe @, "update.#{ property }", =>
250
- node.checked = source[ property ] + '' is node.value
235
+ _node = @_ node
251
236
 
252
- if node.type is 'select-one'
253
- option.selected = true for option in node when source[ property ] + '' is option.value
254
-
255
- @_( node ).on 'change', =>
256
- ( params = {} )[ property ] = node.value
257
- source.update params
258
- source.save() unless node.form?
259
-
260
- source.subscribe @, "update.#{ property }", =>
261
- option.selected = true for option in node when source[ property ] + '' is option.value
237
+ updateSource = ->
238
+ ( params = {} )[ property ] = node.value
239
+ source.update params
240
+ source.save() unless node.form?
241
+
242
+ [ setValue, bindChange ] = switch
243
+ when node.type in [ 'text', 'textarea']
244
+ [
245
+ -> node.value = source[ property ]
246
+ -> _node.on 'change', => updateSource.call @
247
+ ]
248
+ when node.type in [ 'checkbox', 'radio' ]
249
+ [
250
+ -> node.checked = source[ property ] + '' is node.value
251
+ -> _node.on 'change', => updateSource.call @ if node.checked is true
252
+ ]
253
+ when node.type is 'select-one'
254
+ [
255
+ -> option.selected = true for option in node when source[ property ] + '' is option.value
256
+ -> _node.on 'change', => updateSource.call @
257
+ ]
258
+
259
+ @assistants[ 'show' ].push ->
260
+ setValue.call @
261
+ bindChange.call @
262
+ source.subscribe @, "update.#{ property }", => setValue.call @
263
+
264
+ @assistants[ 'hide' ].push ->
265
+ _node.off 'change'
262
266
  @
263
267
 
264
-
265
268
  analize: ( value ) ->
266
269
  value.replace /{\s*(.+?)\s*}/g, ( match, sub ) => @analizeMatch sub
267
270
 
@@ -286,6 +289,6 @@ Nali.extend View:
286
289
  if segment of source then source = source[ segment ]
287
290
  else break
288
291
  unless property of source
289
- console.warn "%s: chain \"%s\" is invalid, \"%s\" is not Object", @sysname, chain, segment
292
+ console.warn "%s: chain \"%s\" is invalid, \"%s\" is not Object", @_name, chain, segment
290
293
  return null
291
294
  [ source, property ]
@@ -8,6 +8,5 @@ group :development, :test do
8
8
  end
9
9
 
10
10
  group :production do
11
- gem 'yui-compressor'
12
11
  gem 'uglifier'
13
12
  end
@@ -3,4 +3,4 @@ Nali.Controller.extend Homes:
3
3
  actions:
4
4
  default: 'index'
5
5
 
6
- index: ( collection ) ->
6
+ index: ->
File without changes
@@ -1,13 +1,7 @@
1
1
  Nali::Application.configure :development do |config|
2
2
 
3
- # config.assets_digest = true
4
-
5
3
  config.assets_debug = true
6
4
 
7
- # config.assets.js_compressor = Uglifier.new( mangle: true )
8
-
9
- # config.assets.css_compressor = YUI::CssCompressor.new
10
-
11
5
  ActiveRecord::Base.logger = false #Logger.new STDOUT
12
6
 
13
7
  end
@@ -1,14 +1,11 @@
1
- require 'uglifier'
2
- require 'yui/compressor'
3
-
4
1
  Nali::Application.configure :production do |config|
5
2
 
6
3
  ActiveRecord::Base.logger = false
7
4
 
8
5
  config.assets_digest = true
9
6
 
10
- config.assets.js_compressor = Uglifier.new( mangle: true )
7
+ config.assets.js_compressor = :uglify
11
8
 
12
- config.assets.css_compressor = YUI::CssCompressor.new
9
+ config.assets.css_compressor = :scss
13
10
 
14
11
  end
@@ -1,5 +1,7 @@
1
1
  Nali::Application.configure :test do |config|
2
2
 
3
+ # ActiveRecord::Base.logger = false
4
+
3
5
  # config.assets_digest = true
4
6
 
5
7
  # config.assets_debug = true
@@ -0,0 +1,7 @@
1
+ Nali::Application.configure do |routes|
2
+
3
+ # routes.get '/test' do
4
+ # Your code
5
+ # end
6
+
7
+ end
@@ -41,10 +41,17 @@ module Nali
41
41
  content_type asset.content_type
42
42
  params[ :body ] ? asset.body : asset
43
43
  end
44
+
45
+ require File.join( root, 'config/routes' )
44
46
 
45
47
  get '/*' do
46
48
  if !request.websocket?
47
- settings.assets[ 'application.html' ]
49
+ compiled_path = File.join settings.public_folder, 'assets/application.html'
50
+ if settings.environment != :development and File.exists?( compiled_path )
51
+ send_file compiled_path
52
+ else
53
+ settings.assets[ 'application.html' ]
54
+ end
48
55
  else
49
56
  request.websocket do |client|
50
57
  client.onopen { Nali::Clients.on_client_connected client }
@@ -66,18 +73,17 @@ module Nali
66
73
  Dir[ File.join( root, 'lib/*/**/*.rb' ) ].each { |file| require( file ) }
67
74
  Dir[ File.join( root, 'app/**/*.rb' ) ].each { |file| require( file ) }
68
75
  require File.join( root, 'config/application' )
76
+ require File.join( root, 'config/clients' )
77
+ Dir[ File.join( root, 'config/initializers/**/*.rb' ) ].each { |file| require( file ) }
69
78
  self
70
79
  end
71
80
 
72
81
  def self.tasks
73
82
  initialize!
83
+ require 'rake/tasklib'
74
84
  require 'sinatra/activerecord/rake'
75
- require 'rake/sprocketstask'
76
- Rake::SprocketsTask.new do |task|
77
- task.environment = settings.assets
78
- task.output = File.join( public_folder, 'assets' )
79
- task.assets = %w( application.html application.js application.css )
80
- end
85
+ require 'nali/tasks'
86
+ Nali::Tasks.new
81
87
  end
82
88
 
83
89
  end
@@ -20,13 +20,14 @@ module Nali
20
20
  target_path = File.join( Dir.pwd, name )
21
21
  FileUtils.cp_r source_path, target_path
22
22
  dirs = []
23
- dirs << File.join( target_path, "app/controllers" )
24
- dirs << File.join( target_path, "db" )
25
- dirs << File.join( target_path, "db/migrate" )
26
- dirs << File.join( target_path, "lib" )
27
- dirs << File.join( target_path, "public" )
28
- dirs << File.join( target_path, "tmp" )
29
- dirs << File.join( target_path, "vendor" )
23
+ dirs << File.join( target_path, 'app/controllers' )
24
+ dirs << File.join( target_path, 'db' )
25
+ dirs << File.join( target_path, 'db/migrate' )
26
+ dirs << File.join( target_path, 'lib' )
27
+ dirs << File.join( target_path, 'public' )
28
+ dirs << File.join( target_path, 'tmp' )
29
+ dirs << File.join( target_path, 'vendor' )
30
+ dirs << File.join( target_path, 'config/initializers' )
30
31
  dirs.each { |path| Dir.mkdir( path ) unless Dir.exists?( path ) }
31
32
  puts "Application #{ name } created"
32
33
  end
data/lib/nali/model.rb CHANGED
@@ -34,7 +34,7 @@ module Nali
34
34
  end
35
35
  end
36
36
  params[ :attributes ] = attributes
37
- params[ :sysname ] = self.class.name
37
+ params[ :_name ] = self.class.name
38
38
  params[ :created ] = self.created_at.to_f
39
39
  params[ :updated ] = self.updated_at.to_f
40
40
  params[ :destroyed ] = self.destroyed?
data/lib/nali/tasks.rb ADDED
@@ -0,0 +1,69 @@
1
+ module Nali
2
+
3
+ class Tasks < Rake::TaskLib
4
+
5
+ def initialize
6
+ @settings = Nali::Application.settings
7
+ define
8
+ end
9
+
10
+ def define
11
+
12
+ namespace :assets do
13
+ desc "Compile assets"
14
+ task :compile do
15
+ sprockets_tasks
16
+
17
+ Rake::Task[ 'assets:clobber' ].invoke
18
+ Rake::Task[ 'assets:cache:clean' ].invoke
19
+ Rake::Task[ 'assets' ].invoke
20
+
21
+ assets_folder = File.join @settings.public_folder, 'assets/'
22
+ Dir[ assets_folder + '*' ]
23
+ .select { |file| file =~ /application.*?\.html/ }
24
+ .each do |file|
25
+ filename = File.basename( file ).split '.'
26
+ filename[0] = 'application'
27
+ filename = filename.join '.'
28
+ File.rename file, assets_folder + filename
29
+ end
30
+
31
+ puts 'Assets compiled'
32
+
33
+ end
34
+
35
+ desc 'Remove old assets'
36
+ task :clean do
37
+ sprockets_tasks
38
+ Rake::Task[ 'clean_assets' ].invoke
39
+ puts 'Old compiled assets removed'
40
+ end
41
+
42
+ desc 'Remove all assets'
43
+ task :clobber do
44
+ FileUtils.rm_rf File.join( @settings.root, 'public/assets' )
45
+ puts 'Compiled assets removed'
46
+ end
47
+
48
+ namespace :cache do
49
+ desc 'Remove cached files'
50
+ task :clean do
51
+ FileUtils.rm_rf File.join( @settings.root, 'tmp/cache' )
52
+ puts 'Cached files removed'
53
+ end
54
+ end
55
+
56
+ end
57
+ end
58
+
59
+ def sprockets_tasks
60
+ require 'rake/sprocketstask'
61
+ Rake::SprocketsTask.new do |task|
62
+ task.environment = @settings.assets
63
+ task.output = File.join( @settings.public_folder, 'assets' )
64
+ task.assets = %w( application.html application.js application.css )
65
+ end
66
+ end
67
+
68
+ end
69
+ end
data/lib/nali/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Nali
2
2
 
3
- VERSION = '0.2.0'
3
+ VERSION = '0.2.1'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nali
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-10-12 00:00:00.000000000 Z
12
+ date: 2014-10-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thin
@@ -212,6 +212,7 @@ files:
212
212
  - lib/nali/extensions.rb
213
213
  - lib/nali/model.rb
214
214
  - lib/nali/clients.rb
215
+ - lib/nali/tasks.rb
215
216
  - lib/nali/controller.rb
216
217
  - lib/nali/generator.rb
217
218
  - lib/nali/connection.rb
@@ -229,7 +230,6 @@ files:
229
230
  - lib/generator/app/assets/stylesheets/notices/warning.css.sass
230
231
  - lib/generator/app/assets/stylesheets/application.css.sass
231
232
  - lib/generator/app/models/access.yml
232
- - lib/generator/app/clients.rb
233
233
  - lib/generator/app/templates/application.html.erb
234
234
  - lib/generator/app/templates/notice/error.html
235
235
  - lib/generator/app/templates/notice/warning.html
@@ -242,6 +242,8 @@ files:
242
242
  - lib/generator/config/environments/test.rb
243
243
  - lib/generator/config/environments/development.rb~
244
244
  - lib/generator/config/environments/production.rb
245
+ - lib/generator/config/routes.rb
246
+ - lib/generator/config/clients.rb
245
247
  - lib/generator/config/database.yml
246
248
  - lib/generator/config/application.rb
247
249
  - lib/generator/Gemfile