spiderfw 0.6.20 → 0.6.21
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 +13 -0
- data/README.rdoc +8 -2
- data/Rakefile +49 -24
- data/VERSION +1 -1
- data/apps/app_server/controllers/app_server_controller.rb +3 -2
- data/apps/app_server/lib/git_app.rb +11 -2
- data/apps/config_editor/_init.rb +2 -1
- data/apps/config_editor/controllers/config_editor_controller.rb +7 -1
- data/apps/drb_server/script/start_server.rb +1 -1
- data/apps/servant/bin/spider-servant.rb +1 -1
- data/blueprints/home/{spider.gemfile → Gemfile} +18 -3
- data/blueprints/install/config.ru +1 -1
- data/lib/spiderfw/app.rb +7 -0
- data/lib/spiderfw/cmd/cmd.rb +1 -1
- data/lib/spiderfw/cmd/commands/app.rb +6 -2
- data/lib/spiderfw/cmd/commands/cert.rb +1 -0
- data/lib/spiderfw/cmd/commands/console.rb +1 -1
- data/lib/spiderfw/cmd/commands/content.rb +2 -2
- data/lib/spiderfw/cmd/commands/create.rb +1 -1
- data/lib/spiderfw/cmd/commands/model.rb +2 -2
- data/lib/spiderfw/cmd/commands/setup.rb +1 -1
- data/lib/spiderfw/cmd/commands/test.rb +1 -1
- data/lib/spiderfw/config/options/spider.rb +2 -1
- data/lib/spiderfw/controller/controller.rb +15 -4
- data/lib/spiderfw/controller/mixins/visual.rb +2 -0
- data/lib/spiderfw/http/adapters/cgi.rb +3 -3
- data/lib/spiderfw/http/adapters/mongrel.rb +2 -2
- data/lib/spiderfw/http/adapters/rack.rb +2 -2
- data/lib/spiderfw/http/adapters/webrick.rb +2 -2
- data/lib/spiderfw/http/server.rb +26 -11
- data/lib/spiderfw/i18n/cldr.rb +8 -6
- data/lib/spiderfw/i18n/javascript_parser.rb +1 -0
- data/lib/spiderfw/init.rb +2 -0
- data/lib/spiderfw/model/base_model.rb +13 -3
- data/lib/spiderfw/model/condition.rb +4 -0
- data/lib/spiderfw/model/mappers/db_mapper.rb +9 -8
- data/lib/spiderfw/model/mappers/mapper.rb +18 -10
- data/lib/spiderfw/model/migrations/drop_table.rb +20 -0
- data/lib/spiderfw/model/migrations/replace.rb +18 -13
- data/lib/spiderfw/model/migrations.rb +5 -0
- data/lib/spiderfw/model/mixins/tree.rb +1 -1
- data/lib/spiderfw/model/model.rb +3 -0
- data/lib/spiderfw/model/storage/db/adapters/oracle.rb +1 -1
- data/lib/spiderfw/model/storage/db/adapters/sqlite.rb +1 -1
- data/lib/spiderfw/model/storage/db/connectors/jdbc_oracle.rb +1 -1
- data/lib/spiderfw/model/storage/db/connectors/oci8.rb +1 -1
- data/lib/spiderfw/model/storage/db/db_schema.rb +4 -1
- data/lib/spiderfw/model/storage/db/dialects/no_total_rows.rb +1 -1
- data/lib/spiderfw/setup/app_manager.rb +11 -3
- data/lib/spiderfw/setup/app_server_client.rb +13 -7
- data/lib/spiderfw/setup/setup_task.rb +43 -0
- data/lib/spiderfw/setup/spider_setup_wizard.rb +1 -1
- data/lib/spiderfw/spider.rb +16 -3
- data/lib/spiderfw/templates/blocks/html.rb +2 -0
- data/lib/spiderfw/templates/layout.rb +10 -5
- data/lib/spiderfw/templates/resources/less.rb +11 -8
- data/lib/spiderfw/templates/template_blocks.rb +1 -1
- data/lib/spiderfw/test/capybara.rb +2 -1
- data/lib/spiderfw/test.rb +2 -1
- data/lib/spiderfw.rb +1 -4
- data/spider.gemspec +5 -2
- metadata +47 -18
- data/blueprints/home/Gemfile.disabled +0 -3
data/CHANGELOG
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
= 0.6.21
|
2
|
+
== 03 November, 2011
|
3
|
+
* require 'spidefw' no longer runs Spider.init(); use require 'spiderfw/init' instead
|
4
|
+
* Support for home Gettext translations
|
5
|
+
* Fixed stupid memory leak
|
6
|
+
* Avoid some useless queries and joins in DbMapper
|
7
|
+
* Enabled home Gemfile
|
8
|
+
* Ruby 1.9.3 support
|
9
|
+
* Updated test for new Capybara
|
10
|
+
* Fixed unescaped text in views variables
|
11
|
+
* Added BaseModel#own_elements method to list non-integrated elements
|
12
|
+
* Changed Controller before and after calling to avoid problems in subclassed controllers
|
13
|
+
|
1
14
|
= 0.6.20
|
2
15
|
== 05 October, 2011
|
3
16
|
* Added support for aggregate functions in DB conditions
|
data/README.rdoc
CHANGED
@@ -6,6 +6,7 @@ Its main features are:
|
|
6
6
|
|
7
7
|
* A model layer that is easy to use, yet flexible enough to adapt to legacy schemas.
|
8
8
|
Models are defined in Ruby: schemas are autogenerated, but can be specified manually when needed.
|
9
|
+
Direct sql is almost never used, but you can embed custom sql behaviour per model for each storage.
|
9
10
|
|
10
11
|
Deep loading and deep querying are supported, through a simple pure-Ruby query language:
|
11
12
|
|
@@ -20,7 +21,8 @@ Its main features are:
|
|
20
21
|
|
21
22
|
* A view layer based on HTML, with reusable widgets that are easy to extend in both their controller and their view.
|
22
23
|
|
23
|
-
Templates are mostly
|
24
|
+
Templates are mostly HTML, but implement variable substitution, widget instantiation, conditional and iteration logic.
|
25
|
+
They are valid XML, though the namespace is implied.
|
24
26
|
|
25
27
|
<div id="my-view">
|
26
28
|
<h1>Hello, { @my_name }</h1>
|
@@ -98,7 +100,11 @@ In addition, Spider provides:
|
|
98
100
|
|
99
101
|
* Full internazionalization using gettext and CLDR, even for Javascript files.
|
100
102
|
|
101
|
-
|
103
|
+
To install:
|
104
|
+
|
105
|
+
$ gem install spiderfw
|
106
|
+
|
107
|
+
Dive in by running
|
102
108
|
|
103
109
|
$ spider create home test
|
104
110
|
$ cd test
|
data/Rakefile
CHANGED
@@ -9,7 +9,7 @@ def check_app_path(full, partial)
|
|
9
9
|
return true if rel.to_s == partial
|
10
10
|
if Spider.paths[:apps]
|
11
11
|
rel = p.relative_path_from(Pathname.new(Spider.paths[:apps]))
|
12
|
-
return true if rel.to_s == partial
|
12
|
+
return true if rel.to_s == partial || (partial == 'home' && !rel.to_s.blank?)
|
13
13
|
end
|
14
14
|
return false
|
15
15
|
end
|
@@ -20,21 +20,42 @@ task :updatepo, [:app] do |t, args|
|
|
20
20
|
require 'spiderfw/i18n/shtml_parser'
|
21
21
|
require 'spiderfw/i18n/javascript_parser'
|
22
22
|
require 'gettext/tools'
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
23
|
+
|
24
|
+
if !args[:app] || args[:app] == 'spider'
|
25
|
+
Dir.chdir($SPIDER_PATH)
|
26
|
+
GetText.update_pofiles("spider", Dir.glob("{lib,bin,views,public}/**/*.{rb,rhtml,shtml,js}"), "Spider #{Spider::VERSION}")
|
27
|
+
else
|
28
|
+
if args[:app] == 'home'
|
29
|
+
Spider.init
|
30
|
+
else
|
31
|
+
Spider.init
|
32
|
+
apps = Spider.find_all_apps
|
33
|
+
apps.each do |path|
|
34
|
+
next if args[:app] && !check_app_path(path, args[:app])
|
35
|
+
require path+'/_init.rb' if File.directory?(path+'/po')
|
36
|
+
end
|
37
|
+
end
|
38
|
+
Spider.apps.each do |name, mod|
|
39
|
+
if args[:app] == 'home'
|
40
|
+
next unless File.directory?(File.join(Spider.paths[:apps], mod.relative_path))
|
41
|
+
rel_path = File.join(Spider.paths[:root], 'views', mod.relative_path)
|
42
|
+
next unless File.directory?(rel_path)
|
43
|
+
mod.gettext_parsers.each do |p|
|
44
|
+
require p
|
45
|
+
end
|
46
|
+
files = Dir.glob(File.join(rel_path, '**', '*{.shtml}'))
|
47
|
+
GetText.update_pofiles(mod.short_name, files, File.join(Spider.paths[:root], 'po', mod.relative_path))
|
48
|
+
else
|
49
|
+
next unless File.directory?(mod.path+'/po')
|
50
|
+
next if args[:app] && !check_app_path(mod.path, args[:app])
|
51
|
+
Dir.chdir(mod.path)
|
52
|
+
mod.gettext_parsers.each do |p|
|
53
|
+
require p
|
54
|
+
end
|
55
|
+
GetText.update_pofiles(mod.short_name, Dir.glob("{#{mod.gettext_dirs.join(',')}}/**/*.{#{mod.gettext_extensions.join(',')}}"), "#{mod.name} #{mod.version}")
|
56
|
+
print "\n"
|
57
|
+
end
|
35
58
|
end
|
36
|
-
GetText.update_pofiles(mod.short_name, Dir.glob("{#{mod.gettext_dirs.join(',')}}/**/*.{#{mod.gettext_extensions.join(',')}}"), "#{mod.name} #{mod.version}")
|
37
|
-
print "\n"
|
38
59
|
end
|
39
60
|
|
40
61
|
end
|
@@ -42,21 +63,25 @@ end
|
|
42
63
|
desc "Create mo-files. To create for a single app, call rake makemo[app_relative_path], where app_relative_path is the path relative to the apps folder (or 'spider')."
|
43
64
|
task :makemo, [:app] do |t, args|
|
44
65
|
require 'gettext/tools'
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
66
|
+
if !args[:app] || args[:app] == 'spider' || args[:app] == 'home'
|
67
|
+
GetText.create_mofiles(:verbose => true)
|
68
|
+
else
|
69
|
+
require 'spiderfw/spider'
|
70
|
+
Spider.setup_paths(Dir.pwd)
|
71
|
+
apps = Spider.find_all_apps
|
72
|
+
apps.each do |path|
|
73
|
+
next if args[:app] && !check_app_path(path, args[:app])
|
74
|
+
if File.directory?(path+'/po')
|
75
|
+
Dir.chdir(path)
|
76
|
+
GetText.create_mofiles(:verbose => true, :po_root => './po', :mo_root => "#{path}/data/locale")
|
77
|
+
end
|
53
78
|
end
|
54
79
|
end
|
55
80
|
end
|
56
81
|
|
57
82
|
task :test do
|
58
83
|
Dir.chdir("test")
|
59
|
-
require 'spiderfw'
|
84
|
+
require 'spiderfw/init'
|
60
85
|
require 'test/unit/collector/dir'
|
61
86
|
require 'test/unit'
|
62
87
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.21
|
@@ -12,7 +12,6 @@ module Spider; module AppServer
|
|
12
12
|
@scene.apps = AppServer.apps
|
13
13
|
end
|
14
14
|
|
15
|
-
__.text
|
16
15
|
def list_json(names=nil)
|
17
16
|
if names
|
18
17
|
apps = names.split('+')
|
@@ -24,12 +23,13 @@ module Spider; module AppServer
|
|
24
23
|
|
25
24
|
__.action
|
26
25
|
def pack(name=nil)
|
26
|
+
branch = @request.params['branch'] || 'master'
|
27
27
|
app = AppServer.apps_by_id[name]
|
28
28
|
raise NotFound.new("App #{name}") unless app
|
29
29
|
tmp = Tempfile.new("spider-app-archive")
|
30
30
|
if app.is_a?(GitApp)
|
31
31
|
repo = app.repo
|
32
|
-
repo.archive_to_file(
|
32
|
+
repo.archive_to_file(branch, nil, tmp.path, nil, 'cat')
|
33
33
|
else
|
34
34
|
# TODO
|
35
35
|
end
|
@@ -39,6 +39,7 @@ module Spider; module AppServer
|
|
39
39
|
|
40
40
|
__.json
|
41
41
|
def deps(names)
|
42
|
+
AppServer.apps
|
42
43
|
names = names.split('+')
|
43
44
|
new_apps = names
|
44
45
|
specs = {}
|
@@ -4,15 +4,24 @@ module Spider; module AppServer
|
|
4
4
|
|
5
5
|
class GitApp < App
|
6
6
|
attr_reader :repo
|
7
|
+
attr_reader :branches
|
7
8
|
|
8
9
|
def initialize(path)
|
9
10
|
super
|
10
11
|
repo = Grit::Repo.new(path)
|
11
12
|
spec = nil
|
12
|
-
repo.
|
13
|
+
repo_branches = repo.heads.map{ |h| h.name }
|
14
|
+
@branches = repo_branches
|
15
|
+
read_spec
|
16
|
+
@repo = repo
|
17
|
+
end
|
18
|
+
|
19
|
+
def read_spec(branch='master')
|
20
|
+
@repo.tree(branch).blobs.each do |blob|
|
13
21
|
next unless blob.basename =~ /\.appspec$/
|
14
22
|
spec = blob.data
|
15
23
|
@spec = Spider::App::AppSpec.eval(spec)
|
24
|
+
@spec.branch = branch
|
16
25
|
if repo_base = Spider.conf.get('app_server.git_repo_base')
|
17
26
|
unless @spec.git_repo
|
18
27
|
@spec.git_repo(repo_base+'/'+@spec.id)
|
@@ -26,7 +35,7 @@ module Spider; module AppServer
|
|
26
35
|
@last_modified = repo.commits.first.authored_date # FIXME
|
27
36
|
break
|
28
37
|
end
|
29
|
-
@
|
38
|
+
@spec
|
30
39
|
end
|
31
40
|
|
32
41
|
def package
|
data/apps/config_editor/_init.rb
CHANGED
@@ -11,4 +11,5 @@ Spider::Template.register_namespace('config_editor', Spider::ConfigEditor)
|
|
11
11
|
|
12
12
|
|
13
13
|
require 'apps/config_editor/controllers/config_editor_controller'
|
14
|
-
require 'apps/config_editor/widgets/edit/edit'
|
14
|
+
require 'apps/config_editor/widgets/edit/edit'
|
15
|
+
require 'apps/config_editor/widgets/edit_bool/edit_bool'
|
@@ -75,7 +75,13 @@ module Spider; module ConfigEditor
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def create_edit_widget(key, option)
|
78
|
-
|
78
|
+
wclass = case option[:params][:type].name
|
79
|
+
when 'Spider::Bool', 'Spider::DataTypes::Bool'
|
80
|
+
EditBool
|
81
|
+
else
|
82
|
+
Edit
|
83
|
+
end
|
84
|
+
w = wclass.new(@request, @response, @scene)
|
79
85
|
w.attributes[:name] = key
|
80
86
|
w.attributes[:option] = option
|
81
87
|
w.widget_init
|
@@ -1,11 +1,23 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
|
3
|
+
# Place your gems here
|
4
4
|
|
5
|
-
|
5
|
+
|
6
|
+
# Spider
|
7
|
+
|
8
|
+
gem "spiderfw" #, :path => ''
|
9
|
+
|
10
|
+
|
11
|
+
# Database gems
|
12
|
+
|
13
|
+
# gem "mysql", :group => :mysql
|
14
|
+
# gem "ruby-oci8", :group => :oci8
|
15
|
+
|
16
|
+
# Optional gems
|
6
17
|
|
7
18
|
gem "json", :platforms => [:mri_18, :mri_19]
|
8
|
-
gem "mongrel"
|
19
|
+
gem "mongrel", :platforms => [:ruby_18, :mingw_18]
|
20
|
+
# gem "mongrel", ">= 1.2.0.pre2" # replace previous line with this for Mongrel on 1.9
|
9
21
|
gem "ripl", :platforms => [:ruby, :mingw]
|
10
22
|
gem "ripl-irb", :platforms => [:ruby, :mingw]
|
11
23
|
gem "ripl-multi_line", :platforms => [:ruby, :mingw]
|
@@ -17,6 +29,7 @@ gem "rspec", :group => :test
|
|
17
29
|
gem "cucumber", '~> 0.10.0', :group => :test
|
18
30
|
gem "capybara", :group => :test
|
19
31
|
gem "yui-compressor", :group => :production
|
32
|
+
gem "fssm", :group => :devel
|
20
33
|
|
21
34
|
if RUBY_PLATFORM =~ /darwin/
|
22
35
|
gem "rb-fsevent", :group => :devel, :platforms => [:mri]
|
@@ -25,6 +38,8 @@ if RUBY_PLATFORM =~ /linux/
|
|
25
38
|
gem "rb-inotify", :group => :devel, :platforms => [:mri]
|
26
39
|
end
|
27
40
|
|
41
|
+
# Include app Gemfiles
|
42
|
+
|
28
43
|
Dir.glob("apps/*/Gemfile") do |f|
|
29
44
|
self.instance_eval(Bundler.read_file(f), f, 1)
|
30
45
|
end
|
data/lib/spiderfw/app.rb
CHANGED
@@ -247,6 +247,9 @@ module Spider
|
|
247
247
|
end
|
248
248
|
alias :#{name}= :#{name}
|
249
249
|
END_OF_EVAL
|
250
|
+
if options[:default].is_a?(TrueClass) || options[:default].is_a?(FalseClass)
|
251
|
+
str += "\nalias :#{name}? :#{name}\n"
|
252
|
+
end
|
250
253
|
class_eval(str)
|
251
254
|
end
|
252
255
|
|
@@ -276,6 +279,9 @@ END_OF_EVAL
|
|
276
279
|
array_attribute :gems_optional
|
277
280
|
attribute :version
|
278
281
|
attribute :app_server
|
282
|
+
attribute :auto_update, :default => true
|
283
|
+
|
284
|
+
attr_accessor :branch
|
279
285
|
|
280
286
|
def id(val=nil)
|
281
287
|
self.app_id(val)
|
@@ -315,6 +321,7 @@ END_OF_EVAL
|
|
315
321
|
@@attributes.each do |a|
|
316
322
|
h[a] = send(a)
|
317
323
|
end
|
324
|
+
h[:branch] = @branch unless @branch.blank?
|
318
325
|
h
|
319
326
|
end
|
320
327
|
|
data/lib/spiderfw/cmd/cmd.rb
CHANGED
@@ -70,7 +70,7 @@ module Spider; module CommandLine
|
|
70
70
|
cmd_name ||= 'help'
|
71
71
|
if !@cmd.main_command.commands[cmd_name]
|
72
72
|
$SPIDER_CMD = true
|
73
|
-
require 'spiderfw'
|
73
|
+
require 'spiderfw/init'
|
74
74
|
if Spider.apps_by_short_name[cmd_name] && Spider.apps_by_short_name[cmd_name].const_defined?(:Cmd)
|
75
75
|
app_cmd = Spider.apps_by_short_name[cmd_name].const_get(:Cmd).new
|
76
76
|
@cmd.add_command(app_cmd)
|
@@ -117,6 +117,7 @@ class AppCommand < CmdParse::Command
|
|
117
117
|
}
|
118
118
|
opt.on("--ssh-user [USERNAME]", _("SSH user")){ |s| @ssh_user = s }
|
119
119
|
opt.on("--no-activate", _("Don't activate installed apps")){ |s| @no_activate = true }
|
120
|
+
opt.on("--branch", _("Install app from specific branch"), "-b"){ |b| @branch = b }
|
120
121
|
end
|
121
122
|
install.set_execution_block do |args|
|
122
123
|
$SPIDER_INTERACTIVE = true
|
@@ -130,6 +131,7 @@ class AppCommand < CmdParse::Command
|
|
130
131
|
:no_gems => @no_gems, :no_optional_gems => @no_optional_gems, :no_activate => @no_activate
|
131
132
|
}
|
132
133
|
options[:url] = @server_url if @server_url
|
134
|
+
options[:branch] = @branch if @branch
|
133
135
|
if @git && !Spider::AppManager.git_available?
|
134
136
|
puts _("git gem not available; install git gem for Git support")
|
135
137
|
exit
|
@@ -151,7 +153,7 @@ class AppCommand < CmdParse::Command
|
|
151
153
|
unless specs[:update].empty?
|
152
154
|
puts _("The following apps will be updated as a dependency: %s") % specs[:update].map{ |s| s.app_id }.join(', ')
|
153
155
|
end
|
154
|
-
Spider::AppManager.new.install(specs, options)
|
156
|
+
Spider::AppManager.new(:interactive => true).install(specs, options)
|
155
157
|
end
|
156
158
|
self.add_command(install)
|
157
159
|
|
@@ -183,6 +185,7 @@ class AppCommand < CmdParse::Command
|
|
183
185
|
opt.on("--refresh", _("Update apps even if the version has not changed"), "-r"){ |r| @refresh = true }
|
184
186
|
opt.on("--no-clear-cache", _("Don't clear cache"), "-C"){ |c| @no_clear_cache = true }
|
185
187
|
opt.on("--no-restart", _("Don't restart the server after the udpate"), "-R"){ |r| @no_restart = true }
|
188
|
+
opt.on("--branch", _("Install app from specific branch"), "-b"){ |b| @branch = b }
|
186
189
|
end
|
187
190
|
update.set_execution_block do |args|
|
188
191
|
$SPIDER_INTERACTIVE = true
|
@@ -197,6 +200,7 @@ class AppCommand < CmdParse::Command
|
|
197
200
|
:clear_cache => !@no_clear_cache, :restart => !@no_restart
|
198
201
|
}
|
199
202
|
options[:url] = @server_url if @server_url
|
203
|
+
options[:branch] = @branch if @branch
|
200
204
|
apps = args
|
201
205
|
options[:refresh] = apps if @refresh
|
202
206
|
apps.each do |app|
|
@@ -243,7 +247,7 @@ class AppCommand < CmdParse::Command
|
|
243
247
|
setup.set_execution_block do |args|
|
244
248
|
$SPIDER_INTERACTIVE = true
|
245
249
|
require 'spiderfw/setup/app_manager'
|
246
|
-
tasks = Spider::AppManager.new.setup(name)
|
250
|
+
tasks = Spider::AppManager.new(:interactive => true).setup(name)
|
247
251
|
unless @no_cleanup
|
248
252
|
tasks.each do |t|
|
249
253
|
begin
|
@@ -35,7 +35,7 @@ class ConsoleCommand < CmdParse::Command
|
|
35
35
|
Ripl.config[:irb_verbose] = false
|
36
36
|
Ripl::Runner.load_rc(Ripl.config[:riplrc])
|
37
37
|
|
38
|
-
require 'spiderfw'
|
38
|
+
require 'spiderfw/init'
|
39
39
|
Object.send(:remove_const, :IRB) if Object.const_defined?(:IRB)
|
40
40
|
Ripl.shell.loop
|
41
41
|
end
|
@@ -13,7 +13,7 @@ class ContentCommand < CmdParse::Command
|
|
13
13
|
end
|
14
14
|
|
15
15
|
publish.set_execution_block do |args|
|
16
|
-
require 'spiderfw'
|
16
|
+
require 'spiderfw/init'
|
17
17
|
Spider::StaticContent.publish
|
18
18
|
end
|
19
19
|
|
@@ -22,7 +22,7 @@ class ContentCommand < CmdParse::Command
|
|
22
22
|
compress = CmdParse::Command.new('compress', false)
|
23
23
|
compress.short_desc = _("Compress Javascript files")
|
24
24
|
compress.set_execution_block do |args|
|
25
|
-
require 'spiderfw'
|
25
|
+
require 'spiderfw/init'
|
26
26
|
Spider::ContentUtils.compress(*args)
|
27
27
|
end
|
28
28
|
|
@@ -51,7 +51,7 @@ class CreateCommand < CmdParse::Command
|
|
51
51
|
Dir.chdir(inst) do
|
52
52
|
$SPIDER_RUN_PATH = Dir.pwd
|
53
53
|
$:.push($SPIDER_RUN_PATH)
|
54
|
-
require 'spiderfw'
|
54
|
+
require 'spiderfw/init'
|
55
55
|
require 'lib/spiderfw/setup/spider_setup_wizard'
|
56
56
|
wizard = Spider::SpiderSetupWizard.new
|
57
57
|
wizard.first_run = true
|
@@ -28,7 +28,7 @@ class ModelCommand < CmdParse::Command
|
|
28
28
|
end
|
29
29
|
|
30
30
|
sync_cmd.set_execution_block do |req_models|
|
31
|
-
require 'spiderfw'
|
31
|
+
require 'spiderfw/init'
|
32
32
|
require 'spiderfw/model/mappers/db_mapper'
|
33
33
|
req_models || []
|
34
34
|
unsafe_fields = {}
|
@@ -98,7 +98,7 @@ class ModelCommand < CmdParse::Command
|
|
98
98
|
}
|
99
99
|
end
|
100
100
|
dump_cmd.set_execution_block do |req_models|
|
101
|
-
require 'spiderfw'
|
101
|
+
require 'spiderfw/init'
|
102
102
|
req_models || []
|
103
103
|
req_models.each do |model_or_app|
|
104
104
|
models = []
|
@@ -42,7 +42,7 @@ class SetupCommand < CmdParse::Command
|
|
42
42
|
tasks = []
|
43
43
|
apps.each do |name|
|
44
44
|
require 'spiderfw/setup/app_manager'
|
45
|
-
tasks += Spider::AppManager.new.setup(name)
|
45
|
+
tasks += Spider::AppManager.new(:interactive => true).setup(name)
|
46
46
|
end
|
47
47
|
unless @no_cleanup
|
48
48
|
tasks.each do |t|
|
@@ -181,7 +181,8 @@ module Spider
|
|
181
181
|
:do => lambda{ |val| ENV['http_proxy'] = val }
|
182
182
|
|
183
183
|
config_option 'resources.disable_custom', _("Disable resource overriding in home"), :type => Spider::Bool, :default => false
|
184
|
-
|
184
|
+
|
185
|
+
config_option 'migrations.window', _("Fetch window to use when migrating models"), :type => Fixnum, :default => 100
|
185
186
|
|
186
187
|
|
187
188
|
end
|
@@ -215,6 +215,10 @@ module Spider
|
|
215
215
|
return do_dispatch(:execute, action) if d_next.dest != self
|
216
216
|
arguments = d_next.params
|
217
217
|
end
|
218
|
+
if d_next && d_next.dest == self
|
219
|
+
@executed_method = d_next.action.to_sym
|
220
|
+
@executed_method_arguments = []
|
221
|
+
end
|
218
222
|
if (@executed_method)
|
219
223
|
meth = self.method(@executed_method)
|
220
224
|
args = arguments + @executed_method_arguments
|
@@ -233,19 +237,23 @@ module Spider
|
|
233
237
|
end
|
234
238
|
end
|
235
239
|
|
236
|
-
def
|
240
|
+
def call_before(action='', *arguments)
|
237
241
|
@call_path = action
|
242
|
+
before(action, *arguments)
|
238
243
|
catch(:done) do
|
239
244
|
#debug("#{self} before")
|
240
|
-
do_dispatch(:
|
245
|
+
do_dispatch(:call_before, action, *arguments)
|
241
246
|
end
|
242
247
|
end
|
243
248
|
|
249
|
+
def before(action='', *arguments)
|
250
|
+
end
|
244
251
|
|
245
252
|
|
246
|
-
def
|
253
|
+
def call_after(action='', *arguments)
|
254
|
+
after(action, *arguments)
|
247
255
|
catch(:done) do
|
248
|
-
do_dispatch(:
|
256
|
+
do_dispatch(:call_after, action, *arguments)
|
249
257
|
end
|
250
258
|
# begin
|
251
259
|
# run_chain(:after)
|
@@ -254,6 +262,9 @@ module Spider
|
|
254
262
|
# try_rescue(exc)
|
255
263
|
# end
|
256
264
|
end
|
265
|
+
|
266
|
+
def after(action='', *arguments)
|
267
|
+
end
|
257
268
|
|
258
269
|
def done?
|
259
270
|
@__done
|
@@ -558,6 +558,8 @@ module Spider; module ControllerMixins
|
|
558
558
|
layout = Spider::Layout.new(resource.path)
|
559
559
|
layout.definer_class = resource.definer
|
560
560
|
layout.asset_set = params[:assets] if params[:assets]
|
561
|
+
layout.no_asset_profiles(*params[:no_asset_profiles]) if params[:no_asset_profiles]
|
562
|
+
layout.only_asset_profiles(params[:only_asset_profiles]) if params[:only_asset_profiles]
|
561
563
|
layout
|
562
564
|
end
|
563
565
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
$:.push(ENV['SPIDER_PATH']+'/lib')
|
2
|
-
require 'spiderfw'
|
2
|
+
require 'spiderfw/init'
|
3
3
|
require 'spiderfw/controller/controller_io'
|
4
4
|
require 'spiderfw/controller/http_controller'
|
5
5
|
require 'spiderfw/http/adapters/cgi_io'
|
@@ -51,9 +51,9 @@ controller_response = Spider::Response.new
|
|
51
51
|
controller_response.server_output = CGIIO.new(STDOUT, controller_response)
|
52
52
|
begin
|
53
53
|
controller = ::Spider::HTTPController.new(controller_request, controller_response)
|
54
|
-
controller.
|
54
|
+
controller.call_before(path)
|
55
55
|
controller.execute(path)
|
56
|
-
controller.
|
56
|
+
controller.call_after(path)
|
57
57
|
rescue => exc
|
58
58
|
Spider.logger.error(exc)
|
59
59
|
controller.ensure()
|
@@ -129,7 +129,7 @@ module Spider; module HTTP
|
|
129
129
|
main_block = lambda do
|
130
130
|
controller = ::Spider::HTTPController.new(controller_request, controller_response)
|
131
131
|
controller.extend(Spider::FirstResponder)
|
132
|
-
controller.
|
132
|
+
controller.call_before(path)
|
133
133
|
MongrelIO.send_headers(controller_response, response) unless Spider.conf.get('http.auto_headers')
|
134
134
|
controller.execute(path)
|
135
135
|
Spider::Logger.debug("Response:")
|
@@ -157,7 +157,7 @@ module Spider; module HTTP
|
|
157
157
|
Spider.request_finished
|
158
158
|
end
|
159
159
|
if controller
|
160
|
-
controller.
|
160
|
+
controller.call_after(path)
|
161
161
|
controller.ensure
|
162
162
|
end
|
163
163
|
|
@@ -101,13 +101,13 @@ module Spider; module HTTP
|
|
101
101
|
begin
|
102
102
|
controller = ::Spider::HTTPController.new(controller_request, controller_response)
|
103
103
|
controller.extend(Spider::FirstResponder)
|
104
|
-
controller.
|
104
|
+
controller.call_before(path)
|
105
105
|
controller.execute(path)
|
106
106
|
if Spider.conf.get('webserver.force_threads')
|
107
107
|
w.close
|
108
108
|
controller_response.server_output.send_headers unless controller_response.server_output.headers_sent?
|
109
109
|
end
|
110
|
-
controller.
|
110
|
+
controller.call_after(path)
|
111
111
|
controller_done = true
|
112
112
|
Spider::Logger.debug("Controller done")
|
113
113
|
rescue => exc
|
@@ -132,9 +132,9 @@ module Spider; module HTTP
|
|
132
132
|
begin
|
133
133
|
controller = ::Spider::HTTPController.new(controller_request, controller_response)
|
134
134
|
controller.extend(Spider::FirstResponder)
|
135
|
-
controller.
|
135
|
+
controller.call_before(path)
|
136
136
|
controller.execute(path)
|
137
|
-
controller.
|
137
|
+
controller.call_after(path)
|
138
138
|
Spider::Logger.debug("Controller done")
|
139
139
|
rescue => exc
|
140
140
|
Spider.logger.debug("Error:")
|