paloma 0.0.8 → 1.2.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.
- data/Changelog.md +12 -0
- data/Rakefile +14 -2
- data/TODO.md +0 -1
- data/app/templates/index.js +1 -1
- data/lib/paloma/action_controller_extension.rb +2 -2
- data/lib/paloma/generators/add_generator.rb +96 -25
- data/paloma.gemspec +1 -1
- data/spec/callback_spec.rb +16 -2
- data/spec/generator_spec.rb +318 -11
- data/spec/sample_app/app/assets/javascripts/paloma/articles/{callbacks.js → _callbacks.js} +0 -0
- data/spec/sample_app/app/assets/javascripts/paloma/index.js +2 -1
- data/spec/sample_app/app/assets/javascripts/paloma/sample_namespace/_callbacks.js +1 -0
- data/spec/sample_app/app/assets/javascripts/paloma/sample_namespace/categories/_callbacks.js +1 -0
- data/spec/sample_app/app/assets/javascripts/paloma/sample_namespace/categories/index.js +3 -0
- data/spec/sample_app/app/views/sample_namespace/categories/index.html.erb +5 -0
- data/spec/sample_app/app/views/sample_namespace/categories/new.html.erb +5 -0
- data/spec/sample_app/controllers.rb +7 -1
- data/spec/sample_app/init.rb +4 -1
- metadata +8 -3
data/Changelog.md
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
Changelog
|
2
2
|
=
|
3
3
|
|
4
|
+
Version 1.2.0
|
5
|
+
-
|
6
|
+
* AddGenerator with multiple actions: `rails g paloma:add namespace/controller action1 action2 action3`
|
7
|
+
|
8
|
+
Version 1.1.0
|
9
|
+
-
|
10
|
+
* Handle namespaced controllers: `rails g paloma:add namespace/controller action`
|
11
|
+
|
12
|
+
Version 1.0.0
|
13
|
+
-
|
14
|
+
* `AddGenerator` changed from `rails g paloma:add controller/action` to `rails g paloma:add controller action`
|
15
|
+
|
4
16
|
Version 0.0.8
|
5
17
|
-
|
6
18
|
* Bug Fix: _callback.js cannot find _local.js
|
data/Rakefile
CHANGED
@@ -9,8 +9,20 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
|
|
9
9
|
end
|
10
10
|
|
11
11
|
|
12
|
-
desc "Run tests"
|
12
|
+
desc "Run all tests"
|
13
13
|
task :test do
|
14
|
-
puts "Testing..."
|
15
14
|
sh "bundle exec rake spec"
|
16
15
|
end
|
16
|
+
|
17
|
+
|
18
|
+
desc "Run callback tests"
|
19
|
+
task :test_callbacks do
|
20
|
+
sh "rspec ./spec/callback_spec.rb"
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
desc "Run generator tests"
|
25
|
+
task :test_generators do
|
26
|
+
sh "rspec ./spec/generator_spec.rb"
|
27
|
+
end
|
28
|
+
|
data/TODO.md
CHANGED
data/app/templates/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
//= require ./paloma
|
1
|
+
//= require ./paloma.js
|
@@ -22,7 +22,7 @@ module Paloma
|
|
22
22
|
# js_callback :params => {}
|
23
23
|
#
|
24
24
|
def js_callback options = {}, extras = {}
|
25
|
-
default_callback = "#{
|
25
|
+
default_callback = "#{controller_path}/#{action_name}"
|
26
26
|
params = {}
|
27
27
|
|
28
28
|
if options.is_a? Hash
|
@@ -33,7 +33,7 @@ module Paloma
|
|
33
33
|
|
34
34
|
elsif options.is_a? Symbol
|
35
35
|
params = extras[:params]
|
36
|
-
callback = "#{
|
36
|
+
callback = "#{controller_path}/#{options}"
|
37
37
|
|
38
38
|
elsif options.nil? || options.is_a?(TrueClass)
|
39
39
|
callback = default_callback
|
@@ -24,46 +24,117 @@ module Paloma
|
|
24
24
|
|
25
25
|
class AddGenerator < ::Rails::Generators::NamedBase
|
26
26
|
source_root Paloma.templates
|
27
|
+
argument :actions, :type => :array, :required => false
|
27
28
|
|
28
29
|
def create_callback_file
|
29
|
-
|
30
|
-
@controller_name = arg[0]
|
31
|
-
action_name = arg[1]
|
30
|
+
args = split_arguments(file_path)
|
32
31
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
Dir.mkdir(controller_folder) unless Dir.exists?(controller_folder)
|
39
|
-
|
40
|
-
generate_from_template local_js unless File.exists?(local_js)
|
41
|
-
generate_from_template callbacks_js unless File.exists?(callbacks_js)
|
32
|
+
@namespace_name = args[0]
|
33
|
+
@namespace_folder = args[1]
|
34
|
+
@controller_name = args[2]
|
35
|
+
@controller_folder = args[3]
|
42
36
|
|
37
|
+
generate_folder(@namespace_folder)
|
38
|
+
generate_folder(@controller_folder)
|
39
|
+
|
43
40
|
# Create a js file for action if there is an action argument
|
44
|
-
if
|
45
|
-
|
46
|
-
/controller\/action/,
|
47
|
-
"#{@controller_name}/#{action_name}")
|
48
|
-
|
49
|
-
File.open(action_js, 'w'){ |f| f.write(content) }
|
41
|
+
if actions.present?
|
42
|
+
generate_actions actions
|
50
43
|
end
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def split_arguments args
|
50
|
+
#split controller from actions
|
51
|
+
arg = args.split(' ')
|
51
52
|
|
53
|
+
#Split namespace from controller
|
54
|
+
namespace = arg[0].split('/')
|
55
|
+
namespace_name = (namespace.length > 1) ? namespace[0] : nil
|
56
|
+
namespace_folder = namespace_name.nil? ? nil : "#{Paloma.destination}/#{namespace_name}"
|
57
|
+
|
58
|
+
controller_name = namespace_name.nil? ? namespace[0].split(' ')[0] : namespace[1].split(' ')[0]
|
59
|
+
controller_folder = namespace_folder.nil? ?
|
60
|
+
"#{Paloma.destination}/#{controller_name}" :
|
61
|
+
"#{namespace_folder}/#{controller_name}"
|
62
|
+
|
63
|
+
# [namespace_name, namespace_folder, controller_name, controller_folder]
|
64
|
+
files = [namespace_name, namespace_folder, controller_name, controller_folder]
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
def generate_actions actions
|
69
|
+
actions.each do |action|
|
70
|
+
action_js = "#{@controller_folder}/#{action}.js"
|
71
|
+
if action.present? && !File.exists?(action_js)
|
72
|
+
controller_path = @namespace_name.nil? ? @controller_name : "#{@namespace_name}/#{@controller_name}"
|
73
|
+
|
74
|
+
content = File.read("#{Paloma.templates}/action.js").gsub(
|
75
|
+
/controller\/action/,
|
76
|
+
"#{controller_path}/#{action}")
|
77
|
+
|
78
|
+
File.open(action_js, 'w'){ |f| f.write(content) }
|
79
|
+
|
80
|
+
puts "create #{action_js}"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
def generate_folder folder
|
87
|
+
unless (folder.nil? || Dir.exists?(folder))
|
88
|
+
Dir.mkdir(folder)
|
89
|
+
|
90
|
+
callbacks_js = "#{folder}/_callbacks.js"
|
91
|
+
local_js = "#{folder}/_local.js"
|
92
|
+
|
93
|
+
generate_from_template local_js unless File.exists?(local_js)
|
94
|
+
generate_from_template callbacks_js unless File.exists?(callbacks_js)
|
95
|
+
|
96
|
+
if folder == @namespace_folder
|
97
|
+
content = File.read(callbacks_js).gsub('//= require_tree .', '')
|
98
|
+
File.open(callbacks_js, 'w'){ |f| f.write(content) }
|
99
|
+
end
|
100
|
+
|
101
|
+
require_callbacks folder
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
def require_callbacks folder
|
52
107
|
# Require controller's _callbacks.js to Paloma's main index.js file.
|
53
108
|
# Located on "#{Paloma.destination}/index.js" or by default on
|
54
109
|
# app/assets/javascripts/paloma/index.js
|
55
|
-
|
56
|
-
|
57
|
-
|
110
|
+
|
111
|
+
if (@namespace_folder.present? && folder != @namespace_folder)
|
112
|
+
File.open("#{@namespace_folder}/_callbacks.js", 'a+'){ |f|
|
113
|
+
is_present = f.lines.grep("\n//= require ./#{@controller_name}/_callbacks.js").any?
|
114
|
+
f << "\n//= require ./#{@controller_name}/_callbacks.js" unless is_present
|
115
|
+
}
|
116
|
+
end
|
117
|
+
|
118
|
+
controller = @namespace_folder.present? ? @namespace_name : @controller_name
|
119
|
+
|
120
|
+
unless (@namespace_folder.present? && folder != @namespace_folder)
|
121
|
+
File.open(Paloma.index_js, 'a+'){ |f|
|
122
|
+
f << "\n//= require ./#{controller}/_callbacks.js"
|
123
|
+
}
|
124
|
+
end
|
58
125
|
end
|
59
126
|
|
60
127
|
|
61
|
-
private
|
62
|
-
|
63
128
|
def generate_from_template destination_filename
|
64
|
-
|
65
|
-
|
129
|
+
controller = destination_filename.gsub(/[\/|\w|_]+\/paloma\//, '')
|
130
|
+
|
131
|
+
filename = controller.split('/').last
|
132
|
+
controller = controller.gsub('/' + filename, '')
|
133
|
+
controller = controller.gsub('/', '.')
|
134
|
+
|
135
|
+
content = File.read("#{Paloma.templates}/#{filename}").gsub(/controller/, controller)
|
66
136
|
File.open(destination_filename, 'w'){ |f| f.write(content) }
|
137
|
+
puts "create #{destination_filename}"
|
67
138
|
end
|
68
139
|
end
|
69
140
|
end
|
data/paloma.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'paloma'
|
3
|
-
s.version = '
|
3
|
+
s.version = '1.2.0'
|
4
4
|
s.summary = "a sexy way to organize javascript files using Rails` asset pipeline"
|
5
5
|
s.description = "a sexy way to organize javascript files using Rails` asset pipeline"
|
6
6
|
s.authors = ["Karl Paragua", "Bia Esmero"]
|
data/spec/callback_spec.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
|
2
|
+
|
3
3
|
feature 'Callbacks' do
|
4
4
|
|
5
5
|
it 'should execute articles/new callback', :js => true do
|
@@ -62,5 +62,19 @@ feature 'Callbacks' do
|
|
62
62
|
|
63
63
|
page.has_selector?('#from-articles-edit-callback').should == true
|
64
64
|
end
|
65
|
+
|
66
|
+
|
67
|
+
it 'should execute sample_namespace/categories/index callback', :js => true do
|
68
|
+
1.upto(10).each { |i| Category.create :name => "Category #{i}" }
|
69
|
+
|
70
|
+
visit sample_namespace_categories_path
|
71
|
+
page.has_selector?('#from-categories-index').should == true
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
it 'should execute sample_namespace/categories/index callback instead of new callback', :js => true do
|
76
|
+
visit new_sample_namespace_category_path
|
77
|
+
|
78
|
+
page.has_selector?('#from-categories-index').should == true
|
79
|
+
end
|
65
80
|
end
|
66
|
-
=end
|
data/spec/generator_spec.rb
CHANGED
@@ -4,6 +4,7 @@ require 'fileutils'
|
|
4
4
|
|
5
5
|
TEMP = "#{File.dirname(__FILE__)}/tmp/"
|
6
6
|
|
7
|
+
# rails g paloma:setup
|
7
8
|
feature Paloma::SetupGenerator do
|
8
9
|
include GeneratorSpec::TestCase
|
9
10
|
destination TEMP
|
@@ -29,11 +30,11 @@ def mimic_setup
|
|
29
30
|
# Mimic SetupGenerator results before running the AddGenerator
|
30
31
|
FileUtils.cd TEMP
|
31
32
|
FileUtils.mkpath Paloma.destination
|
32
|
-
File.open("#{Paloma.destination}/index.js", 'w') { |f| f.write('
|
33
|
+
File.open("#{Paloma.destination}/index.js", 'w') { |f| f.write('//= require ./paloma.js')}
|
33
34
|
end
|
34
35
|
|
35
36
|
|
36
|
-
|
37
|
+
# rails g paloma:add sexy_controller
|
37
38
|
feature Paloma::AddGenerator, 'creating controller folder only' do
|
38
39
|
include GeneratorSpec::TestCase
|
39
40
|
destination TEMP
|
@@ -48,10 +49,19 @@ feature Paloma::AddGenerator, 'creating controller folder only' do
|
|
48
49
|
specify do
|
49
50
|
destination_root.should have_structure {
|
50
51
|
directory Paloma.destination do
|
51
|
-
directory 'sexy_controller'
|
52
|
+
directory 'sexy_controller' do
|
53
|
+
file '_callbacks.js' do
|
54
|
+
contains "//= require ./_local.js"
|
55
|
+
contains "//= require_tree ."
|
56
|
+
end
|
57
|
+
|
58
|
+
file '_local.js' do
|
59
|
+
contains "Paloma.sexy_controller = {"
|
60
|
+
end
|
61
|
+
end
|
52
62
|
|
53
63
|
file 'index.js' do
|
54
|
-
contains '//= require ./sexy_controller/_callbacks'
|
64
|
+
contains '//= require ./sexy_controller/_callbacks.js'
|
55
65
|
end
|
56
66
|
end
|
57
67
|
}
|
@@ -59,11 +69,94 @@ feature Paloma::AddGenerator, 'creating controller folder only' do
|
|
59
69
|
end
|
60
70
|
|
61
71
|
|
72
|
+
# rails g paloma:add namespace/new_controller_folder
|
73
|
+
feature Paloma::AddGenerator, 'creating a namespaced controller folder' do
|
74
|
+
include GeneratorSpec::TestCase
|
75
|
+
destination TEMP
|
76
|
+
arguments ['namespace/new_controller_folder']
|
77
|
+
|
78
|
+
before do
|
79
|
+
prepare_destination
|
80
|
+
mimic_setup
|
81
|
+
run_generator
|
82
|
+
end
|
83
|
+
|
84
|
+
specify do
|
85
|
+
destination_root.should have_structure {
|
86
|
+
directory Paloma.destination do
|
87
|
+
directory 'namespace' do
|
88
|
+
directory 'new_controller_folder' do
|
89
|
+
file '_callbacks.js' do
|
90
|
+
contains '//= require ./_local.js'
|
91
|
+
contains '//= require_tree .'
|
92
|
+
end
|
93
|
+
|
94
|
+
file '_local.js' do
|
95
|
+
contains 'Paloma.namespace.new_controller_folder = {'
|
96
|
+
end
|
97
|
+
end
|
98
|
+
file '_callbacks.js' do
|
99
|
+
contains "//= require ./_local.js"
|
100
|
+
contains "//= require ./new_controller_folder/_callbacks.js"
|
101
|
+
end
|
102
|
+
|
103
|
+
file '_local.js' do
|
104
|
+
contains "Paloma.namespace = {"
|
105
|
+
end
|
106
|
+
end
|
107
|
+
file 'index.js' do
|
108
|
+
contains "//= require ./namespace/_callbacks.js"
|
109
|
+
end
|
110
|
+
end
|
111
|
+
}
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
62
115
|
|
116
|
+
# rails g paloma:add new_controller_folder new_action
|
117
|
+
feature Paloma::AddGenerator, 'creating both controller folder and action file' do
|
118
|
+
include GeneratorSpec::TestCase
|
119
|
+
destination TEMP
|
120
|
+
arguments ['new_controller_folder', 'new_action']
|
121
|
+
|
122
|
+
before do
|
123
|
+
prepare_destination
|
124
|
+
mimic_setup
|
125
|
+
run_generator
|
126
|
+
end
|
127
|
+
|
128
|
+
specify do
|
129
|
+
destination_root.should have_structure {
|
130
|
+
directory Paloma.destination do
|
131
|
+
directory 'new_controller_folder' do
|
132
|
+
file 'new_action.js' do
|
133
|
+
contains "Paloma.callbacks['new_controller_folder/new_action']"
|
134
|
+
end
|
135
|
+
|
136
|
+
file '_callbacks.js' do
|
137
|
+
contains "//= require ./_local.js"
|
138
|
+
contains "//= require_tree ."
|
139
|
+
end
|
140
|
+
|
141
|
+
file '_local.js' do
|
142
|
+
contains "Paloma.new_controller_folder = {"
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
file 'index.js' do
|
147
|
+
contains "//= require ./new_controller_folder/_callbacks.js"
|
148
|
+
end
|
149
|
+
end
|
150
|
+
}
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
|
155
|
+
# rails g paloma:add existing_controller_folder new_action
|
63
156
|
feature Paloma::AddGenerator, 'creating action with existing controller folder' do
|
64
157
|
include GeneratorSpec::TestCase
|
65
158
|
destination TEMP
|
66
|
-
arguments ['existing_controller_folder
|
159
|
+
arguments ['existing_controller_folder', 'new_action']
|
67
160
|
|
68
161
|
before do
|
69
162
|
prepare_destination
|
@@ -80,23 +173,106 @@ feature Paloma::AddGenerator, 'creating action with existing controller folder'
|
|
80
173
|
file 'new_action.js' do
|
81
174
|
contains "Paloma.callbacks['existing_controller_folder/new_action']"
|
82
175
|
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
}
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
|
183
|
+
# rails g paloma:add namespace/new_controller_folder new_action
|
184
|
+
feature Paloma::AddGenerator, 'creating namespaced controller folder and action file' do
|
185
|
+
include GeneratorSpec::TestCase
|
186
|
+
destination TEMP
|
187
|
+
arguments ['namespace/new_controller_folder', 'new_action']
|
188
|
+
|
189
|
+
before do
|
190
|
+
prepare_destination
|
191
|
+
mimic_setup
|
192
|
+
run_generator
|
193
|
+
end
|
194
|
+
|
195
|
+
specify do
|
196
|
+
destination_root.should have_structure {
|
197
|
+
directory Paloma.destination do
|
198
|
+
directory 'namespace' do
|
199
|
+
directory 'new_controller_folder' do
|
200
|
+
file 'new_action.js' do
|
201
|
+
contains "Paloma.callbacks['namespace/new_controller_folder/new_action']"
|
202
|
+
end
|
203
|
+
|
204
|
+
file '_local.js' do
|
205
|
+
contains 'Paloma.namespace.new_controller_folder = {'
|
206
|
+
end
|
207
|
+
|
208
|
+
file '_callbacks.js' do
|
209
|
+
contains '//= require ./_local.js'
|
210
|
+
contains '//= require_tree .'
|
211
|
+
end
|
212
|
+
end
|
83
213
|
|
84
214
|
file '_callbacks.js' do
|
85
215
|
contains "//= require ./_local.js"
|
86
|
-
contains "//=
|
216
|
+
contains "//= require ./new_controller_folder/_callbacks.js"
|
87
217
|
end
|
218
|
+
|
219
|
+
file '_local.js' do
|
220
|
+
contains "Paloma.namespace = {"
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
file 'index.js' do
|
225
|
+
contains "//= require ./namespace/_callbacks.js"
|
88
226
|
end
|
89
227
|
end
|
90
228
|
}
|
91
|
-
end
|
229
|
+
end
|
92
230
|
end
|
93
231
|
|
94
232
|
|
233
|
+
# rails g paloma:add existing_namespace/new_controller_folder new_action
|
234
|
+
feature Paloma::AddGenerator, 'creating controller folder and action file under an existing namespace' do
|
235
|
+
include GeneratorSpec::TestCase
|
236
|
+
destination TEMP
|
237
|
+
arguments ['existing_namespace/new_controller_folder', 'new_action']
|
238
|
+
|
239
|
+
before do
|
240
|
+
prepare_destination
|
241
|
+
mimic_setup
|
242
|
+
Dir.mkdir "#{Paloma.destination}/existing_namespace"
|
243
|
+
|
244
|
+
run_generator
|
245
|
+
end
|
246
|
+
|
247
|
+
specify do
|
248
|
+
destination_root.should have_structure {
|
249
|
+
directory Paloma.destination do
|
250
|
+
directory 'existing_namespace' do
|
251
|
+
directory 'new_controller_folder' do
|
252
|
+
file 'new_action.js' do
|
253
|
+
contains "Paloma.callbacks['existing_namespace/new_controller_folder/new_action']"
|
254
|
+
end
|
255
|
+
|
256
|
+
file '_local.js' do
|
257
|
+
contains 'Paloma.existing_namespace.new_controller_folder = {'
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
261
|
+
file '_callbacks.js' do
|
262
|
+
contains "//= require ./new_controller_folder/_callbacks.js"
|
263
|
+
end
|
264
|
+
end
|
265
|
+
end
|
266
|
+
}
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
95
270
|
|
96
|
-
|
271
|
+
# rails g paloma:add new_controller_folder first_action second_action third_action
|
272
|
+
feature Paloma::AddGenerator, 'create controller folder and multiple action files' do
|
97
273
|
include GeneratorSpec::TestCase
|
98
274
|
destination TEMP
|
99
|
-
arguments ['new_controller_folder
|
275
|
+
arguments ['new_controller_folder', 'first_action', 'second_action', 'third_action']
|
100
276
|
|
101
277
|
before do
|
102
278
|
prepare_destination
|
@@ -108,8 +284,139 @@ feature Paloma::AddGenerator, 'creating both controller folder and action file'
|
|
108
284
|
destination_root.should have_structure {
|
109
285
|
directory Paloma.destination do
|
110
286
|
directory 'new_controller_folder' do
|
111
|
-
file '
|
112
|
-
contains
|
287
|
+
file '_local.js' do
|
288
|
+
contains 'Paloma.new_controller_folder = {'
|
289
|
+
end
|
290
|
+
|
291
|
+
file 'first_action.js' do
|
292
|
+
contains "Paloma.callbacks['new_controller_folder/first_action']"
|
293
|
+
end
|
294
|
+
|
295
|
+
file 'second_action.js' do
|
296
|
+
contains "Paloma.callbacks['new_controller_folder/second_action']"
|
297
|
+
end
|
298
|
+
|
299
|
+
file 'third_action.js' do
|
300
|
+
contains "Paloma.callbacks['new_controller_folder/third_action']"
|
301
|
+
end
|
302
|
+
end
|
303
|
+
|
304
|
+
file 'index.js' do
|
305
|
+
contains '//= require ./new_controller_folder/_callbacks.js'
|
306
|
+
end
|
307
|
+
end
|
308
|
+
}
|
309
|
+
end
|
310
|
+
end
|
311
|
+
|
312
|
+
|
313
|
+
# rails g paloma:add existing_controller_folder first_action second_action third_action
|
314
|
+
feature Paloma::AddGenerator, 'create multiple actions in an existing controller folder' do
|
315
|
+
include GeneratorSpec::TestCase
|
316
|
+
destination TEMP
|
317
|
+
arguments ['existing_controller_folder', 'first_action', 'second_action', 'third_action']
|
318
|
+
|
319
|
+
before do
|
320
|
+
prepare_destination
|
321
|
+
mimic_setup
|
322
|
+
Dir.mkdir "#{Paloma.destination}/existing_controller_folder"
|
323
|
+
|
324
|
+
run_generator
|
325
|
+
end
|
326
|
+
|
327
|
+
specify do
|
328
|
+
destination_root.should have_structure {
|
329
|
+
directory Paloma.destination do
|
330
|
+
directory 'existing_controller_folder' do
|
331
|
+
['first', 'second', 'third'].each do |action|
|
332
|
+
file ("#{action}_action.js") do
|
333
|
+
contains "Paloma.callbacks['existing_controller_folder/#{action}_action']"
|
334
|
+
end
|
335
|
+
end
|
336
|
+
end
|
337
|
+
end
|
338
|
+
}
|
339
|
+
end
|
340
|
+
end
|
341
|
+
|
342
|
+
|
343
|
+
# rails g paloma:add namespace/new_controller_folder first_action second_action third_action
|
344
|
+
feature Paloma::AddGenerator, 'create multiple actions in a new namespaced controller' do
|
345
|
+
include GeneratorSpec::TestCase
|
346
|
+
destination TEMP
|
347
|
+
arguments ['namespace/new_controller_folder', 'first_action', 'second_action', 'third_action']
|
348
|
+
|
349
|
+
before do
|
350
|
+
prepare_destination
|
351
|
+
mimic_setup
|
352
|
+
run_generator
|
353
|
+
end
|
354
|
+
|
355
|
+
specify do
|
356
|
+
destination_root.should have_structure {
|
357
|
+
directory Paloma.destination do
|
358
|
+
directory 'namespace' do
|
359
|
+
directory 'new_controller_folder' do
|
360
|
+
file '_local.js' do
|
361
|
+
contains 'Paloma.namespace.new_controller_folder'
|
362
|
+
end
|
363
|
+
|
364
|
+
['first', 'second', 'third'].each do |action|
|
365
|
+
file ("#{action}_action.js") do
|
366
|
+
contains "Paloma.callbacks['namespace/new_controller_folder/#{action}_action']"
|
367
|
+
end
|
368
|
+
end
|
369
|
+
end
|
370
|
+
file '_callbacks.js' do
|
371
|
+
contains '//= require ./new_controller_folder/_callbacks.js'
|
372
|
+
end
|
373
|
+
|
374
|
+
file '_local.js' do
|
375
|
+
contains 'Paloma.namespace'
|
376
|
+
end
|
377
|
+
end
|
378
|
+
file 'index.js' do
|
379
|
+
contains '//= require ./namespace/_callbacks.js'
|
380
|
+
end
|
381
|
+
end
|
382
|
+
}
|
383
|
+
end
|
384
|
+
end
|
385
|
+
|
386
|
+
|
387
|
+
# rails g paloma:add existing_namespace/new_controller_folder first_action second_action third_action
|
388
|
+
feature Paloma::AddGenerator, 'create multiple actions in an existing namespaced controller' do
|
389
|
+
include GeneratorSpec::TestCase
|
390
|
+
destination TEMP
|
391
|
+
arguments ['existing_namespace/new_controller_folder', 'first_action', 'second_action', 'third_action']
|
392
|
+
|
393
|
+
before do
|
394
|
+
prepare_destination
|
395
|
+
mimic_setup
|
396
|
+
Dir.mkdir "#{Paloma.destination}/existing_namespace"
|
397
|
+
File.open("#{Paloma.destination}/existing_namespace/_callbacks.js", 'w'){ |f|
|
398
|
+
f.write('//= require ./_local.js') }
|
399
|
+
|
400
|
+
run_generator
|
401
|
+
end
|
402
|
+
|
403
|
+
specify do
|
404
|
+
destination_root.should have_structure {
|
405
|
+
directory Paloma.destination do
|
406
|
+
directory 'existing_namespace' do
|
407
|
+
directory 'new_controller_folder' do
|
408
|
+
['first', 'second', 'third'].each do |action|
|
409
|
+
file ("#{action}_action.js") do
|
410
|
+
contains "Paloma.callbacks['existing_namespace/new_controller_folder/#{action}_action']"
|
411
|
+
end
|
412
|
+
end
|
413
|
+
|
414
|
+
file '_local.js' do
|
415
|
+
contains 'Paloma.existing_namespace.new_controller_folder'
|
416
|
+
end
|
417
|
+
end
|
418
|
+
file '_callbacks.js' do
|
419
|
+
contains '//= require ./new_controller_folder/_callbacks.js'
|
113
420
|
end
|
114
421
|
end
|
115
422
|
end
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require ./categories/_callbacks.js
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require_tree .
|
@@ -56,7 +56,13 @@ end
|
|
56
56
|
module SampleNamespace
|
57
57
|
class CategoriesController < ApplicationController
|
58
58
|
def index
|
59
|
-
|
59
|
+
@categories = Category.all
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
def new
|
64
|
+
@category = Category.new
|
65
|
+
js_callback :index
|
60
66
|
end
|
61
67
|
end
|
62
68
|
end
|
data/spec/sample_app/init.rb
CHANGED
@@ -27,7 +27,10 @@ app.initialize!
|
|
27
27
|
# Routes
|
28
28
|
app.routes.draw do
|
29
29
|
resources :articles, :controller => 'Articles'
|
30
|
-
|
30
|
+
|
31
|
+
namespace :sample_namespace do
|
32
|
+
resources :categories
|
33
|
+
end
|
31
34
|
end
|
32
35
|
|
33
36
|
require "#{Paloma.root}/spec/sample_app/models"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paloma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-01-
|
13
|
+
date: 2013-01-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: jquery-rails
|
@@ -184,7 +184,7 @@ files:
|
|
184
184
|
- spec/callback_spec.rb
|
185
185
|
- spec/generator_spec.rb
|
186
186
|
- spec/sample_app/app/assets/javascripts/application.js
|
187
|
-
- spec/sample_app/app/assets/javascripts/paloma/articles/
|
187
|
+
- spec/sample_app/app/assets/javascripts/paloma/articles/_callbacks.js
|
188
188
|
- spec/sample_app/app/assets/javascripts/paloma/articles/create.js
|
189
189
|
- spec/sample_app/app/assets/javascripts/paloma/articles/edit.js
|
190
190
|
- spec/sample_app/app/assets/javascripts/paloma/articles/index.js
|
@@ -193,10 +193,15 @@ files:
|
|
193
193
|
- spec/sample_app/app/assets/javascripts/paloma/articles/update.js
|
194
194
|
- spec/sample_app/app/assets/javascripts/paloma/index.js
|
195
195
|
- spec/sample_app/app/assets/javascripts/paloma/paloma.js
|
196
|
+
- spec/sample_app/app/assets/javascripts/paloma/sample_namespace/_callbacks.js
|
197
|
+
- spec/sample_app/app/assets/javascripts/paloma/sample_namespace/categories/_callbacks.js
|
198
|
+
- spec/sample_app/app/assets/javascripts/paloma/sample_namespace/categories/index.js
|
196
199
|
- spec/sample_app/app/views/articles/index.html.erb
|
197
200
|
- spec/sample_app/app/views/articles/new.html.erb
|
198
201
|
- spec/sample_app/app/views/articles/show.html.erb
|
199
202
|
- spec/sample_app/app/views/layouts/application.html.erb
|
203
|
+
- spec/sample_app/app/views/sample_namespace/categories/index.html.erb
|
204
|
+
- spec/sample_app/app/views/sample_namespace/categories/new.html.erb
|
200
205
|
- spec/sample_app/controllers.rb
|
201
206
|
- spec/sample_app/init.rb
|
202
207
|
- spec/sample_app/models.rb
|