batman-rails 0.0.9 → 0.15.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.
Files changed (56) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +1 -1
  3. data/LICENSE.txt +22 -0
  4. data/README.md +43 -39
  5. data/Rakefile +2 -9
  6. data/batman-rails.gemspec +20 -21
  7. data/lib/batman-rails.rb +8 -1
  8. data/lib/batman-rails/version.rb +6 -0
  9. data/lib/generators/batman/app_generator.rb +117 -0
  10. data/lib/generators/batman/controller_generator.rb +8 -17
  11. data/lib/generators/batman/html_generator.rb +42 -0
  12. data/lib/generators/batman/model_generator.rb +2 -2
  13. data/lib/generators/batman/scaffold_generator.rb +14 -4
  14. data/lib/generators/batman/view_generator.rb +18 -0
  15. data/lib/generators/{batman/common.rb → common.rb} +19 -5
  16. data/lib/templates/batman/application_controller.coffee +1 -0
  17. data/lib/templates/batman/batman_app.coffee +20 -0
  18. data/lib/templates/batman/controller.coffee +7 -0
  19. data/lib/templates/batman/html/edit.html +2 -0
  20. data/lib/templates/batman/html/index.html +2 -0
  21. data/lib/templates/batman/html/main_index.html +259 -0
  22. data/lib/templates/batman/html/show.html +2 -0
  23. data/lib/templates/batman/main_controller.coffee +8 -0
  24. data/lib/templates/batman/model.coffee +13 -0
  25. data/lib/templates/batman/view.coffee +7 -0
  26. data/lib/templates/rails/controller.rb +7 -0
  27. data/lib/templates/rails/index.html +0 -0
  28. data/lib/templates/rails/layout.html +15 -0
  29. data/test/app_generator_test.rb +111 -0
  30. data/test/controller_generator_test.rb +41 -15
  31. data/test/model_generator_test.rb +47 -16
  32. data/test/test_helper.rb +3 -3
  33. data/test/view_generator_test.rb +36 -0
  34. data/vendor/assets/images/batman/bullet.png +0 -0
  35. data/vendor/assets/images/batman/content-bg-fade.png +0 -0
  36. data/vendor/assets/images/batman/content-bg.png +0 -0
  37. data/vendor/assets/images/batman/header-wrapper-bg.jpg +0 -0
  38. data/vendor/assets/images/batman/logo.png +0 -0
  39. data/vendor/assets/javascripts/batman/batman.jquery.js +16 -74
  40. data/vendor/assets/javascripts/batman/batman.js +8951 -8551
  41. data/vendor/assets/javascripts/batman/batman.paginator.js +216 -0
  42. data/vendor/assets/javascripts/batman/batman.rails.js +78 -33
  43. data/vendor/assets/javascripts/batman/es5-shim.js +0 -0
  44. metadata +76 -57
  45. data/lib/batman/rails.rb +0 -6
  46. data/lib/batman/rails/engine.rb +0 -6
  47. data/lib/batman/rails/version.rb +0 -6
  48. data/lib/generators/batman/helper_generator.rb +0 -14
  49. data/lib/generators/batman/install_generator.rb +0 -93
  50. data/lib/generators/batman/templates/batman_app.coffee +0 -24
  51. data/lib/generators/batman/templates/controller.coffee +0 -5
  52. data/lib/generators/batman/templates/helper.coffee +0 -5
  53. data/lib/generators/batman/templates/model.coffee +0 -7
  54. data/test/install_generator_test.rb +0 -105
  55. data/vendor/assets/javascripts/batman/batman.i18n.js +0 -116
  56. data/vendor/assets/javascripts/batman/batman.solo.js +0 -558
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YTg5OGJkMTdiNzEyMjI1ZmMzNGQ2ZDk4NTQ4MjgzYTZiOGM2M2U0Zg==
5
+ data.tar.gz: !binary |-
6
+ Zjk1NTc0MWEwN2RmZWNhZDAzNGJjMjBkZjQxNjMxZDZjNWYwYjgwYg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ Y2IzNDQxMDI5NzBjODZkY2E2YTAzNmQyMmUwYWQ2MmQzODEyMzUwNTA1ZGUw
10
+ YzU4YzE0N2UyMTI3MDIxYjE0NTA0OWJiMzlmNjVlZDRiNzM2YWMzMDE5NmRm
11
+ NDM3MTNiODFiZjNjNDkzMWNiYTFiNDdmNGUzYjYwOTBkOGY2OGY=
12
+ data.tar.gz: !binary |-
13
+ YWQyMWM1YjcxY2U5YWJlYjYyMTliZTg5Y2UyNzUyMGNhNGEyZjMzYTU0ODIz
14
+ N2EyMWIxMGI3YjQzZmQ0YTc2MjYwMzRmMzdlYzM5YWUyN2EwMTRjNmIwNzk0
15
+ MjNlYzZlNmQ2MzZiY2UxMWJjYWZmM2I4MWJkMDY2NjlkMmRiNzc=
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "http://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in batman-rails.gemspec
4
4
  gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Matt Helm
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,58 +1,55 @@
1
- # Batman-Rails
1
+ # Batman::Rails
2
2
 
3
- Easily setup and use batman.js (0.12.0) with rails 3.1
3
+ Easily setup and use batman.js (0.15) with Rails 4
4
4
 
5
- ## Rails 3.1 setup
6
- This gem requires the use of rails 3.1, coffeescript and the new rails asset pipeline provided by sprockets.
5
+ ## Installation
7
6
 
8
- This gem vendors the latest version of batman.js for Rails 3.1 and greater. The files will be added to the asset pipeline and available for you to use.
9
-
10
- ### Installation
7
+ Add this line to your application's Gemfile:
11
8
 
12
- In your Gemfile, add this line:
9
+ gem 'batman-rails'
13
10
 
14
- gem "batman-rails"
15
-
16
- Then run the following commands:
11
+ And then execute:
17
12
 
18
- bundle install
19
- rails g batman:install
13
+ $ bundle
14
+ $ rails generate batman:app
20
15
 
21
16
  ### Layout and namespacing
22
17
 
23
- Running `rails g batman:install` will create the following directory structure under `app/assets/javascripts/`:
24
-
25
- controllers/
18
+ Running `rails generate batman:app` will create the following directory structure under `app/assets/app_name/`:
19
+
26
20
  models/
27
- helpers/
28
-
29
- It will also create a toplevel app_name.coffee file to setup namespacing and setup initial requires.
30
-
21
+ views/
22
+ controllers/
23
+ html/
24
+ lib/
25
+
26
+ It will also create a toplevel `app_name.coffee` file to setup namespacing and setup initial requires.
27
+
31
28
  ## Generators
32
- batman-rails provides 3 simple generators to help get you started using batman.js with rails 3.1.
33
- The generators will only create client side code (javascript).
29
+ Batman-Rails provides 3 simple generators to help get you started using Batman.js with Rails.
30
+ The generators will only create client side code (CoffeeScript).
34
31
 
35
32
  ### Model Generator
36
33
 
37
- rails g batman:model
38
-
39
- This generator creates a batman model and collection inside `app/assets/javascript/models` to be used to talk to the rails backend.
34
+ rails generate batman:model
35
+
36
+ This generator creates a batman model inside `app/assets/app_name/models` to be used to talk to the Rails backend.
40
37
 
41
38
  ### Controllers
42
-
43
- rails g batman:controller
44
-
39
+
40
+ rails generate batman:controller
41
+
45
42
  This generator creates a batman controller for the given actions provided.
46
43
 
47
44
  ### Scaffolding
48
45
 
49
- rails g batman:scaffold
50
-
51
- This generator creates a controller, helper and mode to create a simple crud single page app
46
+ rails generate batman:scaffold
47
+
48
+ This generator creates a controller, helper and model to create a simple crud single page app
52
49
 
53
- ## Example Usage
50
+ ## Usage
54
51
 
55
- Created a new rails 3.1 application called `blog`.
52
+ Created a new Rails application called `blog`.
56
53
 
57
54
  rails new blog
58
55
 
@@ -63,10 +60,17 @@ Edit your Gemfile and add
63
60
  Install the gem and generate scaffolding.
64
61
 
65
62
  bundle install
66
- rails g batman:install
67
- rails g scaffold Post title:string content:string
63
+ rails generate batman:app
64
+ rails generate scaffold Post title:string content:string
68
65
  rake db:migrate
69
- rails g batman:scaffold Post title:string content:string
70
-
71
- You now have installed the batman-rails gem, setup a default directory structure for your frontend batman code.
72
- Then you generated the usual rails server side crud scaffolding and finally generated batman.js code to provide a simple single page crud app.
66
+ rails generate batman:scaffold Post title:string content:string
67
+
68
+ You now have installed the `batman-rails` gem, setup a default directory structure for your frontend batman code. Then you generated the usual Rails server side scaffolding and finally generated Batman.js code to provide a simple single page app.
69
+
70
+ ## Contributing
71
+
72
+ 1. Fork it
73
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
74
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
75
+ 4. Push to the branch (`git push origin my-new-feature`)
76
+ 5. Create new Pull Request
data/Rakefile CHANGED
@@ -1,12 +1,5 @@
1
- #!/usr/bin/env rake
2
- begin
3
- require 'bundler/setup'
4
- rescue LoadError
5
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
- end
7
-
8
- require 'bundler/gem_tasks'
9
- require 'rake/testtask'
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
10
3
 
11
4
  Rake::TestTask.new(:test) do |t|
12
5
  t.libs << 'lib'
@@ -1,27 +1,26 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "batman/rails/version"
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'batman-rails/version'
4
5
 
5
- Gem::Specification.new do |s|
6
- s.name = "batman-rails"
7
- s.version = Batman::Rails::VERSION
8
- s.authors = ["John Duff"]
9
- s.email = ["john.duff@jadedpixel.com"]
10
- s.homepage = "https://github.com/Shopify/batman-rails"
11
- s.summary = %q{Use Batman.js with Rails 3.1}
12
- s.description = %q{Quickly get started with Batman.js in a Rails 3.1 app. Provides generators to get started and bundles in the latest version of Batman.js.}
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "batman-rails"
8
+ gem.version = Batman::Rails::VERSION
9
+ gem.authors = ["Nick Small", "Matt Helm", "John Duff"]
10
+ gem.email = ["batmanjs@shopify.com"]
11
+ gem.description = %q{Quickly get started with batman.js in a Rails app. Provides generators to get started and bundles in the latest version of batman.js.}
12
+ gem.summary = %q{Use batman.js with Rails}
13
+ gem.homepage = "https://github.com/Shopify/batman-rails"
13
14
 
14
- s.rubyforge_project = "batman-rails"
15
+ gem.add_dependency "railties", [">= 3.2"]
15
16
 
16
- s.add_dependency "railties", ">= 3.1.0"
17
- s.add_dependency "thor", ">= 0.14"
18
- s.add_development_dependency "bundler", ">= 1.0.0"
19
- s.add_development_dependency "rails", ">= 3.1.0"
20
- s.add_development_dependency "mocha"
21
- s.add_development_dependency "sqlite3"
17
+ gem.add_development_dependency "bundler"
18
+ gem.add_development_dependency "rails"
19
+ gem.add_development_dependency "mocha"
20
+ gem.add_development_dependency "sqlite3"
22
21
 
23
- s.files = `git ls-files`.split("\n")
24
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
25
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
26
- s.require_paths = ["lib"]
22
+ gem.files = `git ls-files`.split($/)
23
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
24
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
25
+ gem.require_paths = ["lib"]
27
26
  end
@@ -1 +1,8 @@
1
- require "batman/rails"
1
+ require "batman-rails/version"
2
+
3
+ module Batman
4
+ module Rails
5
+ class Engine < ::Rails::Engine
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ module Batman
2
+ module Rails
3
+ VERSION = "0.15.0"
4
+ BATMAN_VERSION = "0.15.0"
5
+ end
6
+ end
@@ -0,0 +1,117 @@
1
+ require 'generators/common'
2
+
3
+ module Batman
4
+ module Generators
5
+ class AppGenerator < ::Rails::Generators::Base
6
+ include Common
7
+ requires_app_name
8
+
9
+ desc "This generator installs Batman.js with a default folder layout"
10
+
11
+ class_option :skip_git, :type => :boolean, :aliases => "-G", :default => false,
12
+ :desc => "Skip Git ignores and keeps"
13
+
14
+ class_option :skip_jquery, :type => :boolean, :aliases => "-J", :default => false,
15
+ :desc => "Skip including jQuery"
16
+
17
+ class_option :skip_es5, :type => :boolean, :default => false,
18
+ :desc => "Skip including the ES5 shim"
19
+
20
+ def setup_rails
21
+ with_app_name do
22
+ template "rails/controller.rb", "app/controllers/#{app_name}_controller.rb"
23
+ template "rails/layout.html", "app/views/layouts/#{app_name}.html.erb"
24
+
25
+ unless ENV["RAILS_ENV"] == "test"
26
+ inject_into_file "config/routes.rb", :after => "#{js_application_name}::Application.routes.draw do\n" do
27
+ route_catchall
28
+ end
29
+ end
30
+
31
+ end
32
+ end
33
+
34
+ def create_app
35
+ with_app_name do
36
+ template "batman/batman_app.coffee", "#{app_path}/#{application_name}.js.coffee"
37
+ end
38
+ end
39
+
40
+ def create_directories
41
+ %w(models views controllers html lib).each do |dir|
42
+ empty_directory "#{app_path}/#{dir}"
43
+ create_file "#{app_path}/#{dir}/.gitkeep" unless options[:skip_git]
44
+ end
45
+ end
46
+
47
+ def create_default_controllers
48
+ with_app_name do
49
+ empty_directory "#{app_path}/html/main"
50
+
51
+ template "batman/application_controller.coffee", "#{app_path}/controllers/application_controller.js.coffee"
52
+ template "batman/main_controller.coffee", "#{app_path}/controllers/main_controller.js.coffee"
53
+ template "batman/html/main_index.html", "#{app_path}/html/main/index.html"
54
+ end
55
+ end
56
+
57
+ def inject_batman
58
+ with_app_name do
59
+ application_file = File.join(app_path, "#{application_name}.js.coffee")
60
+
61
+ prepend_file application_file, app_requires
62
+ prepend_file application_file, jquery_requires unless options[:skip_jquery]
63
+ prepend_file application_file, batman_requires
64
+ prepend_file application_file, es5_requires unless options[:skip_es5]
65
+ end
66
+ end
67
+
68
+ def route_catchall
69
+ <<-CODE
70
+ \n get "(*redirect_path)", to: "#{app_name}\#index", constraints: lambda { |request| request.format == "text/html" }\n
71
+ CODE
72
+ end
73
+
74
+ def es5_requires
75
+ <<-CODE
76
+ #= require batman/es5-shim\n
77
+ CODE
78
+ end
79
+
80
+ def batman_requires
81
+ <<-CODE
82
+ #= require batman/batman
83
+ #= require batman/batman.rails\n
84
+ CODE
85
+ end
86
+
87
+ def jquery_requires
88
+ <<-CODE
89
+ #= require jquery
90
+ #= require batman/batman.jquery\n
91
+ CODE
92
+ end
93
+
94
+ def app_requires
95
+ <<-CODE
96
+ #= require_self
97
+
98
+ #= require_tree ./lib
99
+ #= require_tree ./controllers
100
+ #= require_tree ./models
101
+ #= require_tree ./views\n
102
+ CODE
103
+ end
104
+
105
+ private
106
+
107
+ def file_exists?(file)
108
+ relative_root = relative_to_original_destination_root(destination_root, false)
109
+ source_paths.any? do |source|
110
+ source_file = File.expand_path(file, File.join(source, relative_root))
111
+ File.exists?(source_file)
112
+ end
113
+ end
114
+
115
+ end
116
+ end
117
+ end
@@ -1,4 +1,4 @@
1
- require 'generators/batman/common'
1
+ require 'generators/common'
2
2
  module Batman
3
3
  module Generators
4
4
  class ControllerGenerator < ::Rails::Generators::NamedBase
@@ -8,26 +8,17 @@ module Batman
8
8
  desc "This generator creates a Batman controller"
9
9
  argument :actions, :type => :array, :default => [], :banner => "action action"
10
10
 
11
-
12
- RESERVED_JS_WORDS = %w{
13
- break case catch continue debugger default delete do else finally for
14
- function if in instanceof new return switch this throw try typeof var void while with
15
- }
16
-
17
- def validate_no_reserved_words
18
- actions.each do |action|
19
- if RESERVED_JS_WORDS.include? action
20
- raise Thor::Error, "The name '#{action}' is reserved by javascript " <<
21
- "Please choose an alternative action name and run this generator again."
22
- end
23
- end
24
- end
25
-
26
11
  def create_batman_controller
27
12
  with_app_name do
28
- template "controller.coffee", "#{js_path}/controllers/#{plural_name.downcase}_controller.js.coffee"
13
+ template "batman/controller.coffee", "#{app_path}/controllers/#{file_name.downcase}_controller.js.coffee"
14
+ generate "batman:html #{plural_name} #{action_names} #{app_name_flag}"
15
+ generate "batman:view #{plural_name} #{app_name_flag}"
29
16
  end
30
17
  end
18
+
19
+ def action_names
20
+ options[:actions].join(' ') if options[:actions]
21
+ end
31
22
  end
32
23
  end
33
24
  end
@@ -0,0 +1,42 @@
1
+ require 'generators/common'
2
+ module Batman
3
+ module Generators
4
+ class HtmlGenerator < ::Rails::Generators::NamedBase
5
+ include Common
6
+ requires_app_name
7
+
8
+ desc "This generator creates a the HTML files needed for a Batman.Controller"
9
+ argument :actions, :type => :array, :default => [], :banner => "action action"
10
+
11
+
12
+ RESERVED_JS_WORDS = %w{
13
+ break case catch continue debugger default delete do else finally for
14
+ function if in instanceof new return switch this throw try typeof var void while with
15
+ }
16
+
17
+ def validate_no_reserved_words
18
+ actions.each do |action|
19
+ if RESERVED_JS_WORDS.include? action
20
+ raise Thor::Error, "The name '#{action}' is reserved by javascript " <<
21
+ "Please choose an alternative action name and run this generator again."
22
+ end
23
+ end
24
+ end
25
+
26
+ def create_directory
27
+ with_app_name do
28
+ empty_directory "#{app_path}/html/#{plural_name.downcase}"
29
+ end
30
+ end
31
+
32
+ def create_files
33
+ with_app_name do
34
+ (options[:arguments] || %w(index show edit)).each do |file|
35
+ template "batman/html/#{file}.html", "#{app_path}/html/#{plural_name.downcase}/#{file}.html"
36
+ end
37
+ end
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -1,4 +1,4 @@
1
- require 'generators/batman/common'
1
+ require 'generators/common'
2
2
  module Batman
3
3
  module Generators
4
4
  class ModelGenerator < ::Rails::Generators::NamedBase
@@ -10,7 +10,7 @@ module Batman
10
10
 
11
11
  def create_batman_model
12
12
  with_app_name do
13
- template "model.coffee", "#{js_path}/models/#{file_name.downcase}.js.coffee"
13
+ template "batman/model.coffee", "#{app_path}/models/#{singular_table_name.downcase}.js.coffee"
14
14
  end
15
15
  end
16
16