mjs 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +20 -0
- data/README +89 -0
- data/Rakefile +55 -0
- data/TODO +15 -0
- data/app/controllers/application.rb +5 -0
- data/app/controllers/main.rb +7 -0
- data/app/helpers/application_helper.rb +63 -0
- data/app/views/layout/mjs.html.erb +16 -0
- data/app/views/main/index.html.erb +1 -0
- data/lib/mjs/helper.rb +165 -0
- data/lib/mjs/java_script_context.rb +486 -0
- data/lib/mjs/merbtasks.rb +103 -0
- data/lib/mjs/page_object.rb +16 -0
- data/lib/mjs/slicetasks.rb +20 -0
- data/lib/mjs/spectasks.rb +53 -0
- data/lib/mjs/utils.rb +13 -0
- data/lib/mjs.rb +86 -0
- data/public/javascripts/master.js +0 -0
- data/public/stylesheets/master.css +2 -0
- data/spec/mjs_spec.rb +20 -0
- data/spec/requests/main_spec.rb +30 -0
- data/spec/spec_helper.rb +58 -0
- data/stubs/app/controllers/application.rb +2 -0
- data/stubs/app/controllers/main.rb +2 -0
- metadata +89 -0
data/lib/mjs.rb
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
if defined?(Merb::Plugins)
|
2
|
+
|
3
|
+
$:.unshift File.dirname(__FILE__)
|
4
|
+
|
5
|
+
dependency 'merb-slices', :immediate => true
|
6
|
+
Merb::Plugins.add_rakefiles "mjs/merbtasks", "mjs/slicetasks", "mjs/spectasks"
|
7
|
+
|
8
|
+
# Register the Slice for the current host application
|
9
|
+
Merb::Slices::register(__FILE__)
|
10
|
+
|
11
|
+
# Slice configuration - set this in a before_app_loads callback.
|
12
|
+
# By default a Slice uses its own layout, so you can swicht to
|
13
|
+
# the main application layout or no layout at all if needed.
|
14
|
+
#
|
15
|
+
# Configuration options:
|
16
|
+
# :layout - the layout to use; defaults to :mjs
|
17
|
+
# :mirror - which path component types to use on copy operations; defaults to all
|
18
|
+
Merb::Slices::config[:mjs][:layout] ||= :mjs
|
19
|
+
|
20
|
+
# All Slice code is expected to be namespaced inside a module
|
21
|
+
module Mjs
|
22
|
+
|
23
|
+
# Slice metadata
|
24
|
+
self.description = "A slice for the Merb framework that offers Ajax actions like RJS with jQuery"
|
25
|
+
self.version = "0.0.1"
|
26
|
+
self.author = "maiha"
|
27
|
+
|
28
|
+
# Stub classes loaded hook - runs before LoadClasses BootLoader
|
29
|
+
# right after a slice's classes have been loaded internally.
|
30
|
+
def self.loaded
|
31
|
+
require 'mjs/helper'
|
32
|
+
end
|
33
|
+
|
34
|
+
# Initialization hook - runs before AfterAppLoads BootLoader
|
35
|
+
def self.init
|
36
|
+
Merb::Controller.send(:include, ::Mjs::Helper)
|
37
|
+
end
|
38
|
+
|
39
|
+
# Activation hook - runs after AfterAppLoads BootLoader
|
40
|
+
def self.activate
|
41
|
+
end
|
42
|
+
|
43
|
+
# Deactivation hook - triggered by Merb::Slices.deactivate(Mjs)
|
44
|
+
def self.deactivate
|
45
|
+
end
|
46
|
+
|
47
|
+
# Setup routes inside the host application
|
48
|
+
#
|
49
|
+
# @param scope<Merb::Router::Behaviour>
|
50
|
+
# Routes will be added within this scope (namespace). In fact, any
|
51
|
+
# router behaviour is a valid namespace, so you can attach
|
52
|
+
# routes at any level of your router setup.
|
53
|
+
#
|
54
|
+
# @note prefix your named routes with :mjs_
|
55
|
+
# to avoid potential conflicts with global named routes.
|
56
|
+
def self.setup_router(scope)
|
57
|
+
# example of a named route
|
58
|
+
scope.match('/index(.:format)').to(:controller => 'main', :action => 'index').name(:index)
|
59
|
+
# the slice is mounted at /mjs - note that it comes before default_routes
|
60
|
+
scope.match('/').to(:controller => 'main', :action => 'index').name(:home)
|
61
|
+
# enable slice-level default routes by default
|
62
|
+
scope.default_routes
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
# Setup the slice layout for Mjs
|
68
|
+
#
|
69
|
+
# Use Mjs.push_path and Mjs.push_app_path
|
70
|
+
# to set paths to mjs-level and app-level paths. Example:
|
71
|
+
#
|
72
|
+
# Mjs.push_path(:application, Mjs.root)
|
73
|
+
# Mjs.push_app_path(:application, Merb.root / 'slices' / 'mjs')
|
74
|
+
# ...
|
75
|
+
#
|
76
|
+
# Any component path that hasn't been set will default to Mjs.root
|
77
|
+
#
|
78
|
+
# Or just call setup_default_structure! to setup a basic Merb MVC structure.
|
79
|
+
Mjs.setup_default_structure!
|
80
|
+
|
81
|
+
# Add dependencies for other Mjs classes below. Example:
|
82
|
+
# dependency "mjs/other"
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
end
|
File without changes
|
data/spec/mjs_spec.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
describe "Mjs (module)" do
|
4
|
+
|
5
|
+
# Implement your Mjs specs here
|
6
|
+
|
7
|
+
# To spec Mjs you need to hook it up to the router like this:
|
8
|
+
|
9
|
+
# before :all do
|
10
|
+
# Merb::Router.prepare { add_slice(:Mjs) } if standalone?
|
11
|
+
# end
|
12
|
+
#
|
13
|
+
# after :all do
|
14
|
+
# Merb::Router.reset! if standalone?
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
#
|
18
|
+
# it "should have proper specs"
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
|
2
|
+
|
3
|
+
describe "/mjs/" do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
mount_slice
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "GET /" do
|
10
|
+
|
11
|
+
before(:each) do
|
12
|
+
@response = request("/mjs/")
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should be successful" do
|
16
|
+
@response.status.should be_successful
|
17
|
+
end
|
18
|
+
|
19
|
+
# This is just an example of what you can do
|
20
|
+
# You can also use the other webrat methods to click links,
|
21
|
+
# fill up forms etc...
|
22
|
+
it "should render the default slice layout" do
|
23
|
+
@response.should have_tag(:h1, :content => "Mjs Slice")
|
24
|
+
@response.should have_selector("div#container div#main")
|
25
|
+
@response.should have_xpath("//div[@id='container']/div[@id='main']")
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'merb-core'
|
3
|
+
require 'merb-slices'
|
4
|
+
require 'spec'
|
5
|
+
|
6
|
+
# Add mjs.rb to the search path
|
7
|
+
Merb::Plugins.config[:merb_slices][:auto_register] = true
|
8
|
+
Merb::Plugins.config[:merb_slices][:search_path] = File.join(File.dirname(__FILE__), '..', 'lib', 'mjs.rb')
|
9
|
+
|
10
|
+
# Require mjs.rb explicitly so any dependencies are loaded
|
11
|
+
require Merb::Plugins.config[:merb_slices][:search_path]
|
12
|
+
|
13
|
+
# Using Merb.root below makes sure that the correct root is set for
|
14
|
+
# - testing standalone, without being installed as a gem and no host application
|
15
|
+
# - testing from within the host application; its root will be used
|
16
|
+
Merb.start_environment(
|
17
|
+
:testing => true,
|
18
|
+
:adapter => 'runner',
|
19
|
+
:environment => ENV['MERB_ENV'] || 'test',
|
20
|
+
:session_store => 'memory'
|
21
|
+
)
|
22
|
+
|
23
|
+
module Merb
|
24
|
+
module Test
|
25
|
+
module SliceHelper
|
26
|
+
|
27
|
+
# The absolute path to the current slice
|
28
|
+
def current_slice_root
|
29
|
+
@current_slice_root ||= File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
30
|
+
end
|
31
|
+
|
32
|
+
# Whether the specs are being run from a host application or standalone
|
33
|
+
def standalone?
|
34
|
+
Merb.root == ::Mjs.root
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
Spec::Runner.configure do |config|
|
42
|
+
config.include(Merb::Test::ViewHelper)
|
43
|
+
config.include(Merb::Test::RouteHelper)
|
44
|
+
config.include(Merb::Test::ControllerHelper)
|
45
|
+
config.include(Merb::Test::SliceHelper)
|
46
|
+
end
|
47
|
+
|
48
|
+
# You can add your own helpers here
|
49
|
+
#
|
50
|
+
Merb::Test.add_helpers do
|
51
|
+
def mount_slice
|
52
|
+
Merb::Router.prepare { add_slice(:Mjs, "mjs") } if standalone?
|
53
|
+
end
|
54
|
+
|
55
|
+
def dismount_slice
|
56
|
+
Merb::Router.reset! if standalone?
|
57
|
+
end
|
58
|
+
end
|
metadata
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mjs
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.6
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- maiha
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-12-18 00:00:00 +09:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: merb-slices
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.0.7.1
|
24
|
+
version:
|
25
|
+
description: A slice for the Merb framework that offers Ajax actions like RJS with jQuery
|
26
|
+
email: maiha@wota.jp
|
27
|
+
executables: []
|
28
|
+
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- README
|
33
|
+
- LICENSE
|
34
|
+
- TODO
|
35
|
+
files:
|
36
|
+
- LICENSE
|
37
|
+
- README
|
38
|
+
- Rakefile
|
39
|
+
- TODO
|
40
|
+
- lib/mjs.rb
|
41
|
+
- lib/mjs/spectasks.rb
|
42
|
+
- lib/mjs/helper.rb
|
43
|
+
- lib/mjs/utils.rb
|
44
|
+
- lib/mjs/page_object.rb
|
45
|
+
- lib/mjs/slicetasks.rb
|
46
|
+
- lib/mjs/merbtasks.rb
|
47
|
+
- lib/mjs/java_script_context.rb
|
48
|
+
- spec/mjs_spec.rb
|
49
|
+
- spec/spec_helper.rb
|
50
|
+
- spec/requests/main_spec.rb
|
51
|
+
- app/views/layout/mjs.html.erb
|
52
|
+
- app/views/main/index.html.erb
|
53
|
+
- app/controllers/main.rb
|
54
|
+
- app/controllers/application.rb
|
55
|
+
- app/helpers/application_helper.rb
|
56
|
+
- public/stylesheets/master.css
|
57
|
+
- public/javascripts/master.js
|
58
|
+
- stubs/app/controllers/main.rb
|
59
|
+
- stubs/app/controllers/application.rb
|
60
|
+
has_rdoc: true
|
61
|
+
homepage: http://github.com/maiha/mjs
|
62
|
+
licenses: []
|
63
|
+
|
64
|
+
post_install_message:
|
65
|
+
rdoc_options: []
|
66
|
+
|
67
|
+
require_paths:
|
68
|
+
- lib
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: "0"
|
74
|
+
version:
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: "0"
|
80
|
+
version:
|
81
|
+
requirements: []
|
82
|
+
|
83
|
+
rubyforge_project: merb
|
84
|
+
rubygems_version: 1.3.5
|
85
|
+
signing_key:
|
86
|
+
specification_version: 3
|
87
|
+
summary: A slice for the Merb framework that offers Ajax actions like RJS with jQuery
|
88
|
+
test_files: []
|
89
|
+
|