rails_script 1.0.0 → 2.0.0

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZTZhZGMyNDM2OWEyZTU5YmE4NjhkZDYxNmE3YmZlZDkxMjY1ZmIwZQ==
4
+ NWZmNTVhNzNhMDMzMmE1MzZjYmQ1OTRmNTU4ZmUzMWFhYzgxMjJiNQ==
5
5
  data.tar.gz: !binary |-
6
- ZmMwMzJlMWVjNjEwZDE5N2U3ZmU0NTE5YWM5NGY1ZTUzYWFiZDYwNg==
6
+ MjI1ZjYwNmNkNjM0NjEwYmQwZTdmYjkwMTMzYmUxNDE2MTdhZWE5ZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- N2VhZWFjOWQ4OGViMTI3YzQ1ODU4ZmU2YzdjY2Q5MGUxZDNhMjdjZWRkODA1
10
- ZTJhMGQ3MjAzNWNiMjQzOGYyZjgyNmZjYzg4MDFkNGM3OWI2MmU2MmQ2Mzg2
11
- NTlkZTJkY2JlM2ViZWQ4ZWQ5YzE1YzYxMDlkMmJkOTBhYzc4MDY=
9
+ NDE2MWI4YjI1N2EwYmFhOTRlN2Q3NzBmN2FkNmE3ZTk5ZTgwZTNiMzNjMTAw
10
+ NjVkY2Y5M2RhZWEyZmU0ZWY0NGIwNDVkMTEyNDJhNzA4YWNmN2VlZjFlNDRm
11
+ MGYyNThjMGVhZWEyODA3ZjljNmY4OWY1NDdhYzg2M2VkNmY2MTU=
12
12
  data.tar.gz: !binary |-
13
- YjhmYjQ2NzVmZjE4NjIxZjBhNTg2OWMyYzM3NGQ4OTI2ZWI4MzBiNzJlNDc3
14
- OGU3MDlmZDQwNWY2ZDg4MjE1Yzg3NTQxMGViYTIyNTcyMWIyMjVhN2U1MGZh
15
- ZTY5ZTFlNzkwNzM1YzIwNDllMWJlY2Q1NDVlYTg1MGFiNjhkZmI=
13
+ OWM1MmQwYzBlZTZiNWM5ZDg3YmVlNTQ0ODAzODZiYjIzZmVjYTIzZGM2ODI2
14
+ OWQ4ZGFiOGE3NDI5MWI3YTRkNzE0MTVjZjAzZTI4OGJiMDM3MmViMGIzMmQ5
15
+ NTVmZDhjZWQxMzVkYmY1MTc3ZTM0NTA1NGE3NDE4OGJiM2JiMjM=
data/README.md CHANGED
@@ -2,11 +2,15 @@
2
2
 
3
3
  RailsScript is a Rails-centric, object oriented, featherweight framework for writing CoffeeScript. It is optimized for the [Rails Asset Pipeline](http://guides.rubyonrails.org/asset_pipeline.html) and is compatible with [TurboLinks](https://github.com/rails/turbolinks). Using Rails controller names and actions to call JavaScript, it has never been easier to write clean, concise, and maintainable page specific JavaScript.
4
4
 
5
+ ## Upgrading to V2
6
+
7
+ To migrate from version 0.x to 1.x, please see the wiki; https://github.com/gemgento/rails_script/wiki/v2-Migration
8
+
5
9
  ## Installation
6
10
 
7
11
  Add this line to your application's Gemfile:
8
12
 
9
- gem 'rails_script', '~> 0.6.1'
13
+ gem 'rails_script', '~> 2.0'
10
14
 
11
15
  And then execute:
12
16
 
@@ -24,9 +28,6 @@ After the generator finishes, you will be prompted to add helper call to your ap
24
28
 
25
29
  NOTE: Your JS files needed have been included before `include_rails_script`. In other words, you still need `<%= javascript_include_tag "application" %>` in your application layout.
26
30
 
27
- ## Configuration
28
- You can configure name of your application in config/initializers/rails_script.rb file.
29
-
30
31
  ## Usage
31
32
 
32
33
  ### Page (Action) Specific JavaScript
@@ -227,7 +228,7 @@ Inheritance from the generator can only come from a Utility class. Any class yo
227
228
 
228
229
  ### Custom Controllers
229
230
 
230
- When a new controller is generated, the JavaScript asset file will be generated with RailsScript. However, if you need to manually generate a RailsScript controller you can use:
231
+ When a new controller is generated, the JavaScript asset file will be generated with App. However, if you need to manually generate a RailsScript controller you can use:
231
232
 
232
233
  $ rails g rails_script:controller Some::NewController
233
234
 
@@ -0,0 +1,23 @@
1
+ class App.Base
2
+
3
+ constructor: ->
4
+ if (window.jQuery) then RailsScript.setClearEventHandlers() # clearing application event handlers only possible with jQuery
5
+ return this
6
+
7
+
8
+ ###
9
+ Run the new action for the create action. Generally the create action will 'render :new' if there was a problem.
10
+ This prevents doubling the code for each action.
11
+ ###
12
+ create: ->
13
+ if typeof $this.new == 'function'
14
+ return $this.new()
15
+
16
+
17
+ ###
18
+ Run the edit action for the update action. Generally the update action will 'render :edit' if there was a problem.
19
+ This prevents doubling the code for each action.
20
+ ###
21
+ update: ->
22
+ if typeof $this.edit == 'function'
23
+ return $this.edit()
@@ -0,0 +1,4 @@
1
+ #= require rails_script/init
2
+ #= require base
3
+ #= require_tree ./utilities
4
+ #= require_tree ./elements
@@ -1,4 +1,4 @@
1
- class <%= RailsScript.app_namespace %>.<%= class_name.gsub('::', '') %>
1
+ class App.<%= class_name.gsub('::', '') %>
2
2
 
3
3
  constructor: ->
4
4
  return this
@@ -1,4 +1,4 @@
1
- class <%= RailsScript.app_namespace %>.<%= controller.gsub('::', '') %> extends <%= RailsScript.app_namespace %>.Base
1
+ class App.<%= controller.gsub('::', '') %> extends App.Base
2
2
 
3
3
  beforeAction: (action) =>
4
4
  return
@@ -1,7 +1,7 @@
1
1
  module RailsScript
2
2
  module Generators
3
3
  class ElementGenerator < ::Rails::Generators::Base
4
- source_root File.expand_path("../templates", __FILE__)
4
+ source_root File.expand_path('../templates', __FILE__)
5
5
  argument :element_name, type: :string
6
6
  argument :utility, type: :string, default: ''
7
7
 
@@ -1,34 +1,28 @@
1
1
  module RailsScript
2
2
  module Generators
3
3
  class InstallGenerator < ::Rails::Generators::Base
4
- source_root File.expand_path("../templates", __FILE__)
4
+ source_root File.expand_path("../../../../../app/assets/javascripts", __FILE__)
5
5
 
6
6
  def copy_files
7
- template 'base.js.coffee', 'app/assets/javascripts/base.js.coffee'
8
- template 'global.js.coffee', 'app/assets/javascripts/global.js.coffee'
9
- template 'rails_script.rb', 'config/initializers/rails_script.rb'
10
- end
11
-
12
- def create_directories
13
- directory 'utilities/', 'app/assets/javascripts/utilities'
14
- directory 'elements/', 'app/assets/javascripts/elements'
7
+ template 'base.coffee', 'app/assets/javascripts/base.coffee'
8
+ template 'global.coffee', 'app/assets/javascripts/global.coffee'
15
9
  end
16
10
 
17
11
  def insert_load_order
18
12
  if File.exist?('app/assets/javascripts/application.js')
19
13
 
20
14
  if File.readlines('app/assets/javascripts/application.js').grep('//= require_tree .').any?
21
- inject_into_file 'app/assets/javascripts/application.js', "\n//= require base\n//= require_tree ./utilities\n//= require_tree ./elements", before: "\n//= require_tree ."
15
+ inject_into_file 'app/assets/javascripts/application.js', "//= require rails_script\n", before: '//= require_tree .'
22
16
  else
23
- append_file 'app/assets/javascripts/application.js', "\n//= require base\n//= require_tree ./utilities\n//= require_tree ./elements\n//= require_tree ."
17
+ append_file 'app/assets/javascripts/application.js', "\n//= require rails_script"
24
18
  end
25
19
 
26
20
  elsif File.exist?('app/assets/javascripts/application.js.coffee')
27
21
 
28
22
  if File.readlines('app/assets/javascripts/application.js.coffee').grep('#= require_tree .').any?
29
- inject_into_file 'app/assets/javascripts/application.js.coffee', "\n#= require base\n#= require_tree ./utilities\n#= require_tree ./elements", before: "\n#= require_tree ."
23
+ inject_into_file 'app/assets/javascripts/application.js.coffee', "#= require rails_script\n", before: '#= require_tree .'
30
24
  else
31
- append_file 'app/assets/javascripts/application.js.coffee', "\n#= require base\n#= require_tree ./utilities\n#= require_tree ./elements\n#= require_tree ."
25
+ append_file 'app/assets/javascripts/application.js.coffee', "\n#= require rails_script"
32
26
  end
33
27
  end
34
28
  end
data/lib/rails_script.rb CHANGED
@@ -1,13 +1,9 @@
1
1
  require 'rails_script/version'
2
+ require 'rails_script/engine'
2
3
  require 'rails_script/loader_helper'
3
4
  require 'rails_script/to_javascript'
4
5
  require 'rails_script/railtie' if defined?(Rails)
5
6
 
6
7
  module RailsScript
7
- mattr_accessor :app_namespace
8
- @@app_namespace = 'App'
9
-
10
- def self.config
11
- yield self
12
- end
8
+
13
9
  end
@@ -0,0 +1,4 @@
1
+ module RailsScript
2
+ class Engine < ::Rails::Engine
3
+ end
4
+ end
@@ -2,7 +2,11 @@ module RailsScript
2
2
  module LoaderHelper
3
3
 
4
4
  def include_rails_script
5
- content_tag :div, nil, id: 'rails-script', data: { controller: controller_path.split(/\/|_/).map(&:capitalize).join(''), vars: @to_javascript.to_json }
5
+ content_tag :div, nil, id: 'rails-script', data: {
6
+ controller: controller_path.split(/\/|_/).map(&:capitalize).join(''),
7
+ action: action_name,
8
+ vars: @to_javascript.to_json
9
+ }
6
10
  end
7
11
 
8
12
  end
@@ -1,3 +1,3 @@
1
1
  module RailsScript
2
- VERSION = '1.0.0'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -0,0 +1,25 @@
1
+ window.RailsScript ||= {}
2
+ window.App ||= {}
3
+ window.Element ||= {}
4
+ window.Utility ||= {}
5
+
6
+ $(document).on "turbolinks:load.rails_script", ->
7
+ Utility.RailsVars = $('#rails-script').data('vars')
8
+ window.$this = new (App["#{$('#rails-script').data('controller')}"] || App.Base)()
9
+
10
+ action = $('#rails-script').data('action')
11
+
12
+ if typeof $this.beforeAction == 'function'
13
+ $this.beforeAction action
14
+ if typeof $this[action] == 'function'
15
+ $this[action]()
16
+ if typeof $this.afterAction == 'function'
17
+ $this.afterAction action
18
+
19
+ RailsScript.setClearEventHandlers = ->
20
+ jQuery(document).on 'turbolinks:before-visit', ->
21
+ for element in [window, document]
22
+ for event, handlers of (jQuery._data(element, 'events') || {})
23
+ for handler in handlers
24
+ if handler? && handler.namespace == ''
25
+ jQuery(element).off event, handler.handler
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_script
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Pheasey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-16 00:00:00.000000000 Z
11
+ date: 2016-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -73,6 +73,11 @@ files:
73
73
  - LICENSE.txt
74
74
  - README.md
75
75
  - Rakefile
76
+ - app/assets/javascripts/base.coffee
77
+ - app/assets/javascripts/elements/.keep
78
+ - app/assets/javascripts/global.coffee
79
+ - app/assets/javascripts/rails_script.coffee
80
+ - app/assets/javascripts/utilities/.keep
76
81
  - lib/generators/rails_script/class/USAGE
77
82
  - lib/generators/rails_script/class/class_generator.rb
78
83
  - lib/generators/rails_script/class/templates/javascript.js.coffee
@@ -84,21 +89,18 @@ files:
84
89
  - lib/generators/rails_script/element/templates/javascript.js.coffee
85
90
  - lib/generators/rails_script/install/USAGE
86
91
  - lib/generators/rails_script/install/install_generator.rb
87
- - lib/generators/rails_script/install/templates/base.js.coffee
88
- - lib/generators/rails_script/install/templates/elements/.keep
89
- - lib/generators/rails_script/install/templates/global.js.coffee
90
- - lib/generators/rails_script/install/templates/rails_script.rb
91
- - lib/generators/rails_script/install/templates/utilities/.keep
92
92
  - lib/generators/rails_script/utility/USAGE
93
93
  - lib/generators/rails_script/utility/templates/javascript.js.coffee
94
94
  - lib/generators/rails_script/utility/utility_generator.rb
95
95
  - lib/rails_script.rb
96
+ - lib/rails_script/engine.rb
96
97
  - lib/rails_script/loader_helper.rb
97
98
  - lib/rails_script/railtie.rb
98
99
  - lib/rails_script/to_javascript.rb
99
100
  - lib/rails_script/version.rb
100
- - lib/templates/coffee/assets/javascript.js.coffee
101
+ - lib/templates/coffee/assets/javascript.coffee
101
102
  - rails_script.gemspec
103
+ - vendor/assets/javascripts/rails_script/init.coffee
102
104
  homepage: https://github.com/kpheasey/rails_script
103
105
  licenses:
104
106
  - MIT
@@ -1,45 +0,0 @@
1
- window.<%= RailsScript.app_namespace %> ||= {}
2
- window.Element ||= {}
3
- window.Utility ||= {}
4
-
5
- $(document).on "turbolinks:load.rails_script", ->
6
- Utility.RailsVars = $('#rails-script').data('vars')
7
- window.$this = new (<%= RailsScript.app_namespace %>["#{$('#rails-script').data('controller')}"] || <%= RailsScript.app_namespace %>.Base)()
8
-
9
- class <%= RailsScript.app_namespace %>.Base
10
-
11
- constructor: ->
12
- if (window.jQuery) then @setClearEventHandlers() # clearing application event handlers only possible with jQuery
13
- return this
14
-
15
-
16
- ###
17
- Run the new action for the create action. Generally the create action will 'render :new' if there was a problem.
18
- This prevents doubling the code for each action.
19
- ###
20
- create: ->
21
- if typeof $this.new == 'function'
22
- return $this.new()
23
-
24
-
25
- ###
26
- Run the edit action for the update action. Generally the update action will 'render :edit' if there was a problem.
27
- This prevents doubling the code for each action.
28
- ###
29
- update: ->
30
- if typeof $this.edit == 'function'
31
- return $this.edit()
32
-
33
-
34
- ###
35
- Clear event handlers with a blank namespace. This will prevent window and document event handlers from stacking
36
- when each new page is fetched. Adding a namespace to your events will prevent them from being removed between page
37
- loads, i.e. "$(window).on 'scroll.app', myHandler"
38
- ###
39
- setClearEventHandlers: ->
40
- jQuery(document).on 'page:before-change', ->
41
- for element in [window, document]
42
- for event, handlers of (jQuery._data(element, 'events') || {})
43
- for handler in handlers
44
- if handler? && handler.namespace == ''
45
- jQuery(element).off event, handler.handler
@@ -1,4 +0,0 @@
1
- RailsScript.config do |c|
2
- # Configure name that will be used to namespace the javascript classes
3
- c.app_namespace = 'App'
4
- end