RubyApp 0.0.74 → 0.0.75
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/.gitignore +3 -5
- data/Gemfile.lock +1 -1
- data/lib/ruby_app/application.rb +5 -8
- data/lib/ruby_app/elements/base/base_page.html.haml +15 -0
- data/lib/ruby_app/elements/base/base_page.js.haml +13 -10
- data/lib/ruby_app/elements/base/base_page.rb +20 -2
- data/lib/ruby_app/mixins/render_mixin.rb +2 -2
- data/lib/ruby_app/request.rb +0 -6
- data/lib/ruby_app/session.rb +3 -2
- data/lib/ruby_app/themes/mobile/base/base_page.html.haml +15 -0
- data/lib/ruby_app/translations/en.yml +1 -1
- data/lib/ruby_app/version.rb +1 -1
- data/rakefile +15 -25
- metadata +4 -4
data/.gitignore
CHANGED
@@ -3,13 +3,11 @@
|
|
3
3
|
.DS_Store
|
4
4
|
.idea
|
5
5
|
.sass-cache
|
6
|
-
*.gem
|
7
|
-
*.log
|
8
|
-
*.pid
|
9
|
-
failures_in.txt
|
10
|
-
failures_out.txt
|
11
6
|
lib/ruby_app/elements/pages/authentication/open_id/associations
|
12
7
|
lib/ruby_app/elements/pages/authentication/open_id/nonces
|
13
8
|
lib/ruby_app/elements/pages/authentication/open_id/temp
|
14
9
|
log
|
15
10
|
sandbox
|
11
|
+
*.gem
|
12
|
+
*.log
|
13
|
+
*.pid
|
data/Gemfile.lock
CHANGED
data/lib/ruby_app/application.rb
CHANGED
@@ -55,14 +55,12 @@ module RubyApp
|
|
55
55
|
@@_application = nil
|
56
56
|
end
|
57
57
|
|
58
|
-
def self.create_cache(path, root
|
59
|
-
RubyApp::Application.destroy_cache(path)
|
58
|
+
def self.create_cache(path, root)
|
60
59
|
RubyApp::Application.create!
|
61
60
|
begin
|
62
61
|
Dir.glob(File.join(path, %w[** *.rb])).each do |element_file|
|
63
62
|
RubyApp::Request.create!
|
64
63
|
begin
|
65
|
-
RubyApp::Request.cache = true
|
66
64
|
require element_file
|
67
65
|
element_class = element_file.gsub(root, '')
|
68
66
|
element_class = element_class.gsub(/^\//, '')
|
@@ -70,9 +68,9 @@ module RubyApp
|
|
70
68
|
element_class = RubyApp::Application.upcode(element_class)
|
71
69
|
begin
|
72
70
|
element_class = eval(element_class)
|
73
|
-
|
71
|
+
[:css, :js].each do |format|
|
74
72
|
begin
|
75
|
-
element_class.render(format)
|
73
|
+
element_class.render(format, true)
|
76
74
|
rescue Exception => exception
|
77
75
|
puts "#{element_class}.render(#{format.inspect}) exception=#{exception.message}"
|
78
76
|
end
|
@@ -90,9 +88,8 @@ module RubyApp
|
|
90
88
|
end
|
91
89
|
|
92
90
|
def self.destroy_cache(path)
|
93
|
-
Dir.glob(File.join(path, %w[** .cache
|
94
|
-
|
95
|
-
FileUtils.rm(file)
|
91
|
+
Dir.glob(File.join(path, %w[** .cache])).each do |directory|
|
92
|
+
FileUtils.rm_r(directory)
|
96
93
|
end
|
97
94
|
end
|
98
95
|
|
@@ -14,6 +14,21 @@
|
|
14
14
|
:type => 'text/javascript'}
|
15
15
|
%title
|
16
16
|
= yield(:title) || self.translate.title
|
17
|
+
/
|
18
|
+
RubyApp::Session.data
|
19
|
+
%meta{:name => :session_id, :content => RubyApp::Session.session_id}
|
20
|
+
- RubyApp::Session.data.each do |name, value|
|
21
|
+
%meta{:name => name, :content => value}
|
22
|
+
/
|
23
|
+
RubyApp::Language
|
24
|
+
%meta{:name => :locale, :content => RubyApp::Language.locale.code}
|
25
|
+
/
|
26
|
+
RubyApp::Elements::Base::BasePage#data
|
27
|
+
- self.data.each do |name, value|
|
28
|
+
%meta{:name => name, :content => value}
|
29
|
+
/
|
30
|
+
(other)
|
31
|
+
%meta{:name => :event_error_message, :content => RubyApp::Elements::Base::BasePage.translate.event_error_message}
|
17
32
|
%body
|
18
33
|
%div.body
|
19
34
|
= yield :body
|
@@ -2,10 +2,12 @@
|
|
2
2
|
:plain
|
3
3
|
// #{__FILE__}
|
4
4
|
var RubyApp = new function() {
|
5
|
-
this.translation = {code:'#{RubyApp::Language.locale.code}', title:'#{RubyApp::Language.locale.title}'},
|
6
|
-
this.interval = #{self.interval * 1000},
|
7
5
|
this._interval = 0,
|
8
6
|
this._waitCount = 0,
|
7
|
+
this.getData = function(name, _default) {
|
8
|
+
var value = $('meta[name="' + name + '"]').attr('content');
|
9
|
+
return value == undefined ? _default : value;
|
10
|
+
},
|
9
11
|
this.maximize = function(selector) {
|
10
12
|
var element = $(selector);
|
11
13
|
var _document = $(document);
|
@@ -39,7 +41,7 @@
|
|
39
41
|
this.status = function(message) {
|
40
42
|
},
|
41
43
|
this.queueEvent = function(event, wait) {
|
42
|
-
event.session_id =
|
44
|
+
event.session_id = RubyApp.getData('session_id', null);
|
43
45
|
event.now = new Date().toString();
|
44
46
|
RubyApp.log('RubyApp.queueEvent ENQUEUE event.class=' + event._class + ' wait=' + wait);
|
45
47
|
$(window).queue( function() {
|
@@ -54,8 +56,8 @@
|
|
54
56
|
} )
|
55
57
|
.error( function(request, message, exception) {
|
56
58
|
RubyApp.log('RubyApp.queueEvent ERROR event.class=' + event._class + ' wait=' + wait);
|
57
|
-
if (
|
58
|
-
RubyApp.confirm_refresh(
|
59
|
+
if (RubyApp.getData('event_error', true) == true)
|
60
|
+
RubyApp.confirm_refresh(RubyApp.getData('event_error_message', null));
|
59
61
|
} )
|
60
62
|
.complete( function() {
|
61
63
|
RubyApp.log('RubyApp.queueEvent COMPLETE event.class=' + event._class + ' wait=' + wait);
|
@@ -108,7 +110,7 @@
|
|
108
110
|
RubyApp._waitCount --;
|
109
111
|
},
|
110
112
|
this.showDialog = function(id) {
|
111
|
-
request = $.ajax({type:'GET', url:'
|
113
|
+
request = $.ajax({type:'GET', url:'/' + RubyApp.getData('locale', 'en') + '/elements/' + id + '.html', wait:true});
|
112
114
|
request
|
113
115
|
.success( function(dialog) {
|
114
116
|
var overlay = $('body div.overlay');
|
@@ -133,7 +135,7 @@
|
|
133
135
|
RubyApp.queueEvent({_class:'RubyApp::Elements::Dialog::HiddenEvent', source_id:id}, false);
|
134
136
|
},
|
135
137
|
this.updateElement = function(id) {
|
136
|
-
request = $.ajax({type:'GET', url:'
|
138
|
+
request = $.ajax({type:'GET', url:'/' + RubyApp.getData('locale', 'en') + '/elements/' + id + '.html', wait:true});
|
137
139
|
request
|
138
140
|
.success( function(content) {
|
139
141
|
$('#'+id).replaceWith(content);
|
@@ -170,15 +172,16 @@
|
|
170
172
|
|
171
173
|
$(window).load(function() {
|
172
174
|
RubyApp.queueEvent({_class:'RubyApp::Elements::Page::LoadedEvent', source_id:$('html').attr('id')}, false);
|
173
|
-
|
175
|
+
interval = parseInt(RubyApp.getData('interval', 0)) * 1000;
|
176
|
+
if ( interval > 0 ) {
|
174
177
|
RubyApp._interval = window.setInterval(function() {
|
175
178
|
RubyApp.queueEvent({_class:'RubyApp::Elements::Page::TriggeredEvent', source_id:$('html').attr('id')}, false);
|
176
|
-
},
|
179
|
+
}, interval);
|
177
180
|
}
|
178
181
|
});
|
179
182
|
|
180
183
|
$(window).unload(function() {
|
181
|
-
if ( RubyApp.
|
184
|
+
if ( RubyApp._interval != 0 ) {
|
182
185
|
window.clearInterval(RubyApp._interval);
|
183
186
|
$(window).clearQueue();
|
184
187
|
}
|
@@ -10,8 +10,10 @@ module RubyApp
|
|
10
10
|
module Base
|
11
11
|
require 'ruby_app/element'
|
12
12
|
require 'ruby_app/language'
|
13
|
+
require 'ruby_app/mixins/hash_mixin'
|
13
14
|
|
14
15
|
class BasePage < RubyApp::Element
|
16
|
+
include RubyApp::Mixins::HashMixin
|
15
17
|
|
16
18
|
class LoadedEvent < RubyApp::Element::Event
|
17
19
|
|
@@ -31,14 +33,30 @@ module RubyApp
|
|
31
33
|
|
32
34
|
template_path(:all, File.dirname(__FILE__))
|
33
35
|
|
34
|
-
|
36
|
+
attr_reader :data
|
35
37
|
|
36
38
|
event :loaded
|
37
39
|
event :triggered
|
38
40
|
|
39
41
|
def initialize
|
40
42
|
super
|
41
|
-
@
|
43
|
+
@data = {}
|
44
|
+
end
|
45
|
+
|
46
|
+
def [](key)
|
47
|
+
@data[key]
|
48
|
+
end
|
49
|
+
|
50
|
+
def []=(key, value)
|
51
|
+
@data[key] = value
|
52
|
+
end
|
53
|
+
|
54
|
+
def interval
|
55
|
+
return data[:interval]
|
56
|
+
end
|
57
|
+
|
58
|
+
def interval=(value)
|
59
|
+
data[:interval] = value
|
42
60
|
end
|
43
61
|
|
44
62
|
protected
|
@@ -22,7 +22,7 @@ module RubyApp
|
|
22
22
|
RubyApp::Request.content_for(self, name, value, &block)
|
23
23
|
end
|
24
24
|
|
25
|
-
def render(format)
|
25
|
+
def render(format, write_cache = false)
|
26
26
|
cache = self.is_a?(Class) ? self.get_cache(format) : self.class.get_cache(format)
|
27
27
|
if File.exists?(cache)
|
28
28
|
self.rendered?(cache) do
|
@@ -50,7 +50,7 @@ module RubyApp
|
|
50
50
|
end
|
51
51
|
RubyApp::Request.content_for(self, template, content)
|
52
52
|
end
|
53
|
-
if cache &&
|
53
|
+
if cache && write_cache
|
54
54
|
RubyApp::Log.debug("#{RubyApp::Log.prefix(self, __method__)} File.open(#{cache.inspect}, 'w')")
|
55
55
|
cache_directory = File.dirname(cache)
|
56
56
|
Dir.mkdir(cache_directory) unless File.exists?(cache_directory)
|
data/lib/ruby_app/request.rb
CHANGED
@@ -14,8 +14,6 @@ module RubyApp
|
|
14
14
|
class Request < ::Rack::Request
|
15
15
|
extend RubyApp::Mixins::DelegateMixin
|
16
16
|
|
17
|
-
attr_accessor :cache
|
18
|
-
|
19
17
|
def language
|
20
18
|
self.fullpath =~ /^\/([^\/\?]+)/
|
21
19
|
$1 || RubyApp::Application.options.default_language
|
@@ -29,10 +27,6 @@ module RubyApp
|
|
29
27
|
self.params
|
30
28
|
end
|
31
29
|
|
32
|
-
def cache?
|
33
|
-
return self.cache
|
34
|
-
end
|
35
|
-
|
36
30
|
def rendered?(template)
|
37
31
|
@rendered.key?(template)
|
38
32
|
end
|
data/lib/ruby_app/session.rb
CHANGED
@@ -3,6 +3,7 @@ module RubyApp
|
|
3
3
|
require 'ruby_app/log'
|
4
4
|
require 'ruby_app/mixins/configure_mixin'
|
5
5
|
require 'ruby_app/mixins/delegate_mixin'
|
6
|
+
require 'ruby_app/mixins/hash_mixin'
|
6
7
|
require 'ruby_app/mixins/translate_mixin'
|
7
8
|
require 'ruby_app/request'
|
8
9
|
|
@@ -22,8 +23,8 @@ module RubyApp
|
|
22
23
|
|
23
24
|
end
|
24
25
|
|
25
|
-
attr_reader :session_id, :pages
|
26
|
-
attr_accessor :identity
|
26
|
+
attr_reader :session_id, :pages, :data
|
27
|
+
attr_accessor :identity
|
27
28
|
|
28
29
|
def initialize(session_id, page = nil, data = {})
|
29
30
|
require 'ruby_app/elements/pages/default_page'
|
@@ -24,6 +24,21 @@
|
|
24
24
|
:type => 'text/javascript'}
|
25
25
|
%title
|
26
26
|
= yield(:title) || self.translate.title
|
27
|
+
/
|
28
|
+
RubyApp::Session.data
|
29
|
+
%meta{:name => :session_id, :content => RubyApp::Session.session_id}
|
30
|
+
- RubyApp::Session.data.each do |name, value|
|
31
|
+
%meta{:name => name, :content => value}
|
32
|
+
/
|
33
|
+
RubyApp::Language
|
34
|
+
%meta{:name => :locale, :content => RubyApp::Language.locale.code}
|
35
|
+
/
|
36
|
+
RubyApp::Elements::Base::BasePage#data
|
37
|
+
- self.data.each do |name, value|
|
38
|
+
%meta{:name => name, :content => value}
|
39
|
+
/
|
40
|
+
(other)
|
41
|
+
%meta{:name => :event_error_message, :content => RubyApp::Elements::Base::BasePage.translate.event_error_message}
|
27
42
|
%body
|
28
43
|
%div.body
|
29
44
|
= yield :body
|
@@ -5,7 +5,7 @@ ruby_app:
|
|
5
5
|
elements:
|
6
6
|
base:
|
7
7
|
base_page:
|
8
|
-
|
8
|
+
event_error_message: An error occurred sending the event. The page will refresh so you can try again.
|
9
9
|
dialogs:
|
10
10
|
base:
|
11
11
|
base_ok_dialog:
|
data/lib/ruby_app/version.rb
CHANGED
data/rakefile
CHANGED
@@ -15,7 +15,7 @@ namespace :ruby_app do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
desc 'Run'
|
18
|
-
task :run do |task|
|
18
|
+
task :run => ['ruby_app:cache:create'] do |task|
|
19
19
|
system("cd ./lib/ruby_app && clear && bundle exec ../../bin/ruby_app run")
|
20
20
|
end
|
21
21
|
|
@@ -25,7 +25,7 @@ namespace :ruby_app do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
desc 'Push to master, release, and increment version'
|
28
|
-
task :release do |task|
|
28
|
+
task :release => ['ruby_app:cache:create'] do |task|
|
29
29
|
system "git push origin master && rake release"
|
30
30
|
version_file = File.join(RubyApp::ROOT, %w[version.rb])
|
31
31
|
RubyApp::VERSION =~ /(\d+)\.(\d+)\.(\d+)/
|
@@ -35,24 +35,9 @@ namespace :ruby_app do
|
|
35
35
|
|
36
36
|
namespace :test do
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
task :all do |task|
|
42
|
-
system("bundle exec cucumber --format rerun --tags ~@broken --require features --out failures_out.txt; cat failures_out.txt")
|
43
|
-
end
|
44
|
-
|
45
|
-
desc 'Rerun failed feature tests'
|
46
|
-
task :failures do |task|
|
47
|
-
system("mv failures_out.txt failures_in.txt; bundle exec cucumber --format rerun --tags ~@broken --require features --out failures_out.txt @failures_in.txt; cat failures_out.txt")
|
48
|
-
end
|
49
|
-
|
50
|
-
desc 'Run feature tests for the given feature file'
|
51
|
-
task :one, :file do |task, arguments|
|
52
|
-
system("bundle exec cucumber --format pretty --tags ~@broken --require features '#{arguments.file}'")
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
38
|
+
desc 'Run all tests'
|
39
|
+
task :all => ['test:specs',
|
40
|
+
'test:features']
|
56
41
|
|
57
42
|
desc 'Run RSpec tests'
|
58
43
|
task :specs, :file, :line do |task, arguments|
|
@@ -67,17 +52,22 @@ namespace :ruby_app do
|
|
67
52
|
end
|
68
53
|
end
|
69
54
|
|
70
|
-
desc 'Run all
|
71
|
-
task :
|
72
|
-
|
55
|
+
desc 'Run feature tests for all features or the given feature file'
|
56
|
+
task :features, :file do |task, arguments|
|
57
|
+
unless arguments.file
|
58
|
+
system("bundle exec cucumber --format pretty --tags ~@broken --require features")
|
59
|
+
else
|
60
|
+
system("bundle exec cucumber --format pretty --tags ~@broken --require features '#{arguments.file}'")
|
61
|
+
end
|
62
|
+
end
|
73
63
|
|
74
64
|
end
|
75
65
|
|
76
66
|
namespace :cache do
|
77
67
|
|
78
68
|
desc 'Create element cache'
|
79
|
-
task :create do |task|
|
80
|
-
RubyApp::Application.create_cache(File.join(File.dirname(__FILE__), %w[lib ruby_app elements]), File.join(File.dirname(__FILE__), %w[lib]))
|
69
|
+
task :create => ['ruby_app:cache:destroy'] do |task|
|
70
|
+
RubyApp::Application.create_cache(File.join(File.dirname(__FILE__), %w[lib ruby_app elements pages]), File.join(File.dirname(__FILE__), %w[lib]))
|
81
71
|
end
|
82
72
|
|
83
73
|
desc 'Delete element cache'
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: RubyApp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 137
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 75
|
10
|
+
version: 0.0.75
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Frank G. Ficnar
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-01-
|
18
|
+
date: 2012-01-20 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
prerelease: false
|