merb_strokedb 1
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/.manifest +12 -0
- data/README.mkdn +71 -0
- data/example_merb_app/application.rb +26 -0
- data/example_merb_app/config/framework.rb +6 -0
- data/example_merb_app/config/init.rb +33 -0
- data/example_merb_app/config/store.yml +15 -0
- data/example_merb_app/views/test.html.haml +1 -0
- data/lib/merb/orms/strokedb/connection.rb +80 -0
- data/lib/merb/orms/strokedb/store.example.yml +15 -0
- data/lib/merb_strokedb.rb +23 -0
- data/lib/merb_strokedb/strokedb.task +5 -0
- data/merb_strokedb.gemspec +67 -0
- data/task/echoe.task +14 -0
- metadata +92 -0
data/.manifest
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
example_merb_app/application.rb
|
2
|
+
example_merb_app/config/framework.rb
|
3
|
+
example_merb_app/config/init.rb
|
4
|
+
example_merb_app/config/store.yml
|
5
|
+
example_merb_app/views/test.html.haml
|
6
|
+
lib/merb/orms/strokedb/connection.rb
|
7
|
+
lib/merb/orms/strokedb/store.example.yml
|
8
|
+
lib/merb_strokedb/strokedb.task
|
9
|
+
lib/merb_strokedb.rb
|
10
|
+
README.mkdn
|
11
|
+
task/echoe.task
|
12
|
+
.manifest
|
data/README.mkdn
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
rdie
|
2
|
+
====
|
3
|
+
|
4
|
+
merb_strokedb is a simple plugin for [Merb][] that allows you to use [StrokeDB][]
|
5
|
+
as an 'ORM' in your Merb applications.
|
6
|
+
|
7
|
+
[Merb]: <http://merbivore.com> (Merb homepage)
|
8
|
+
[StrokeDB]: <http://strokedb.com> (StrokeDB homepage)
|
9
|
+
|
10
|
+
Getting
|
11
|
+
-------
|
12
|
+
|
13
|
+
You can install merb_strokedb using the following command:
|
14
|
+
|
15
|
+
sudo gem install merb_strokedb
|
16
|
+
|
17
|
+
The authoritative source for this project is available at
|
18
|
+
<http://github.com/elliottcable/merb_strokedb>. You can clone your own copy with the
|
19
|
+
following command:
|
20
|
+
|
21
|
+
git clone git://github.com/elliottcable/merb_strokedb.git
|
22
|
+
|
23
|
+
If you want to make changes to the codebase, you need to fork your own github
|
24
|
+
repository for said changes. Send a pullrequest to [elliottcable][GitHub]
|
25
|
+
when you've got something ready for the master that you think should be
|
26
|
+
integrated into the root source.
|
27
|
+
|
28
|
+
[GitHub]: <http://github.com/elliottcable> (elliottcable on GitHub)
|
29
|
+
|
30
|
+
Requirements
|
31
|
+
------------
|
32
|
+
|
33
|
+
To integrate merb_strokedb into your own apps, you need the following gems:
|
34
|
+
|
35
|
+
* merb-core (see below)
|
36
|
+
* strokedb (see below)
|
37
|
+
|
38
|
+
To develop and contribute to merb_strokedb, you also need:
|
39
|
+
|
40
|
+
* rspec
|
41
|
+
* rake
|
42
|
+
* rcov
|
43
|
+
|
44
|
+
merb-core
|
45
|
+
---------
|
46
|
+
|
47
|
+
As it currently stands, merb_strokedb is only compatible with merb master.
|
48
|
+
|
49
|
+
To easily install the current merb master, install them with the merb-dev
|
50
|
+
Sakefile as follows:
|
51
|
+
|
52
|
+
sudo gem install sake
|
53
|
+
mkdir -p ~/.ruby; cd ~/.ruby
|
54
|
+
sake -i http://github.com/ivey/merb-dev/tree/master/merb-dev.rake?raw=true
|
55
|
+
sake merb:clone
|
56
|
+
cd ~/.ruby/merb
|
57
|
+
sudo sake merb:gems:wipe
|
58
|
+
sudo sake merb:install
|
59
|
+
|
60
|
+
Licensing
|
61
|
+
---------
|
62
|
+
|
63
|
+
This software package is currently released under the terms of the
|
64
|
+
[Creative Commons Attribution-ShareAlike 3.0][1] license (and any later
|
65
|
+
version, at the discretion of the user). If you wish to use this code in a
|
66
|
+
project licensed under the GPL, hold on tight! The next version will likely be
|
67
|
+
dual-licensed under the CC and GNU licenses, to allow exactly that (my
|
68
|
+
licensing scheme is under review by a lawyer at the moment, I want to ensure
|
69
|
+
it is air-tight).
|
70
|
+
|
71
|
+
[1]: <http://creativecommons.org/licenses/by-sa/3.0/> (Creative Commons Attribution-ShareAlike 3.0 license)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
Fruit = StrokeDB::Meta.new
|
2
|
+
|
3
|
+
class SdbTest < Merb::Controller
|
4
|
+
|
5
|
+
def _template_location(action, type = nil, controller = controller_name)
|
6
|
+
controller == "layout" ? "layout.#{action}.#{type}" : "#{action}.#{type}"
|
7
|
+
end
|
8
|
+
|
9
|
+
def index
|
10
|
+
@apple = Fruit.new
|
11
|
+
@apple.save!
|
12
|
+
"#{CGI::escapeHTML(@apple.inspect)}"
|
13
|
+
end
|
14
|
+
|
15
|
+
def test
|
16
|
+
@orange = Fruit.new
|
17
|
+
@orange.save!
|
18
|
+
render
|
19
|
+
end
|
20
|
+
|
21
|
+
def list
|
22
|
+
@fruitcake = Fruit.find
|
23
|
+
"#{CGI::escapeHTML(@fruitcake.inspect)}"
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Move this to application.rb if you want it to be reloadable in dev mode.
|
2
|
+
Merb::Router.prepare do |r|
|
3
|
+
r.match('/').to(:controller => 's_d_b_test', :action =>'index')
|
4
|
+
r.default_routes
|
5
|
+
end
|
6
|
+
|
7
|
+
|
8
|
+
Merb::Config.use { |c|
|
9
|
+
c[:environment] = 'production',
|
10
|
+
c[:framework] = {},
|
11
|
+
c[:log_level] = 'debug',
|
12
|
+
c[:use_mutex] = false,
|
13
|
+
c[:session_store] = 'cookie',
|
14
|
+
c[:session_id_key] = '_session_id',
|
15
|
+
c[:session_secret_key] = 'c1d41384ec11f78e2bf0a44cedf3976fa112b5f5',
|
16
|
+
c[:exception_details] = true,
|
17
|
+
c[:reload_classes] = true,
|
18
|
+
c[:reload_time] = 0.5
|
19
|
+
}
|
20
|
+
|
21
|
+
# Development StrokeDB
|
22
|
+
STROKEDB_PATH = '/Users/elliottcable/Documents/Work/Code/strokedb'
|
23
|
+
raise 'You need to set STROKEDB_PATH in config/init.rb!' unless STROKEDB_PATH
|
24
|
+
require STROKEDB_PATH + '/strokedb-ruby/strokedb.rb'
|
25
|
+
|
26
|
+
# Development merb_strokedb
|
27
|
+
MERB_STROKEDB_PATH = '/Users/elliottcable/Documents/Work/Code/merb_strokedb'
|
28
|
+
raise 'You need to set MERB_STROKEDB_PATH in config/init.rb!' unless MERB_STROKEDB_PATH
|
29
|
+
$LOAD_PATH.unshift(MERB_STROKEDB_PATH + '/lib').uniq!
|
30
|
+
|
31
|
+
use_orm :strokedb
|
32
|
+
|
33
|
+
dependency 'merb-haml', '> 0.9'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
# This is a sample configuration file for StrokeDB
|
3
|
+
:development: &defaults
|
4
|
+
:threadsafe: false
|
5
|
+
:database: development
|
6
|
+
|
7
|
+
:test:
|
8
|
+
<<: *defaults
|
9
|
+
:database: test
|
10
|
+
|
11
|
+
:production:
|
12
|
+
<<: *defaults
|
13
|
+
:threadsafe: true
|
14
|
+
:port: 9999
|
15
|
+
:database: production
|
@@ -0,0 +1 @@
|
|
1
|
+
%pre= CGI::escapeHTML(@orange.inspect)
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'strokedb' unless Object.const_defined? 'StrokeDB'
|
3
|
+
|
4
|
+
module Merb
|
5
|
+
module Orms
|
6
|
+
|
7
|
+
module StrokeDB
|
8
|
+
THREADS = []
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def config_file() Merb.root / "config" / "store.yml" end
|
12
|
+
def sample_dest() Merb.root / "config" / "store.example.yml" end
|
13
|
+
def sample_source() File.dirname(__FILE__) / "store.example.yml" end
|
14
|
+
|
15
|
+
def copy_sample_config
|
16
|
+
FileUtils.cp sample_source, sample_dest unless File.exists?(sample_dest)
|
17
|
+
end
|
18
|
+
|
19
|
+
def config
|
20
|
+
@config ||=
|
21
|
+
begin
|
22
|
+
# Convert string keys to symbols
|
23
|
+
full_config = Erubis.load_yaml_file(config_file)
|
24
|
+
config = (Merb::Plugins.config[:merb_strokedb] = {})
|
25
|
+
|
26
|
+
envd_config = (full_config[Merb.environment.to_sym] || full_config[Merb.environment])
|
27
|
+
envd_config.each do |k, v|
|
28
|
+
if k == 'port'
|
29
|
+
config[k.to_sym] = v.to_i
|
30
|
+
else
|
31
|
+
config[k.to_sym] = v
|
32
|
+
end
|
33
|
+
end
|
34
|
+
config
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Database connects as soon as the gem is loaded
|
39
|
+
def connect
|
40
|
+
if File.exists?(config_file)
|
41
|
+
Merb.logger.info!("Setting up & connecting to database db/#{config[:database]}.strokedb...")
|
42
|
+
::StrokeDB.use_global_default_config!
|
43
|
+
|
44
|
+
if config[:threadsafe]
|
45
|
+
Merb.logger.info!("Starting StrokeDB DRb server on druby://localhost:#{config[:port]}...")
|
46
|
+
# Create the server, and detach...
|
47
|
+
::StrokeDB::Config.build :default => true, :base_path => "db/#{config[:database]}.strokedb"
|
48
|
+
Merb::Orms::StrokeDB::THREADS <<
|
49
|
+
::StrokeDB.default_store.remote_server("druby://localhost:#{config[:port]}").start
|
50
|
+
|
51
|
+
Merb::Orms::StrokeDB::THREADS.map do |thread|
|
52
|
+
::Kernel.fork { thread.join }
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
# Reattach to the now-running server
|
57
|
+
::StrokeDB.default_store = ::StrokeDB::RemoteStore::DRb::Client.new("druby://localhost:#{config[:port]}")
|
58
|
+
else
|
59
|
+
::StrokeDB::Config.build :default => true, :base_path => "db/#{config[:database]}.strokedb"
|
60
|
+
end
|
61
|
+
else
|
62
|
+
copy_sample_config
|
63
|
+
Merb.logger.warn "No store.yml file found in #{Merb.root}/config."
|
64
|
+
Merb.logger.warn "A sample file was created called store.example.yml for you to copy and edit."
|
65
|
+
exit(1)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# Registering this ORM lets the user choose StrokeDB as a session store
|
70
|
+
# in merb.yml's session_store: option. No idea if this works, correctly...?
|
71
|
+
def register_session_type
|
72
|
+
Merb.register_session_type("strokedb",
|
73
|
+
"merb/session/strokedb_session",
|
74
|
+
"Using StrokeDB sessions")
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
# This is a sample configuration file for StrokeDB
|
3
|
+
:development: &defaults
|
4
|
+
:threadsafe: false
|
5
|
+
:database: development
|
6
|
+
|
7
|
+
:test:
|
8
|
+
<<: *defaults
|
9
|
+
:database: test
|
10
|
+
|
11
|
+
:production:
|
12
|
+
<<: *defaults
|
13
|
+
:threadsafe: true
|
14
|
+
:port: 9999
|
15
|
+
:database: production
|
@@ -0,0 +1,23 @@
|
|
1
|
+
if defined?(Merb::Plugins)
|
2
|
+
module Merb::Orms
|
3
|
+
|
4
|
+
module StrokeDB
|
5
|
+
VERSION = '1'
|
6
|
+
end
|
7
|
+
|
8
|
+
end
|
9
|
+
|
10
|
+
require File.join(File.dirname(__FILE__) / :merb / :orms / :strokedb / :connection)
|
11
|
+
Merb::Plugins.add_rakefiles 'merb_strokedb' / 'strokedb.task'
|
12
|
+
|
13
|
+
class Merb::Orms::StrokeDB::Connect < Merb::BootLoader
|
14
|
+
|
15
|
+
after BeforeAppRuns
|
16
|
+
|
17
|
+
def self.run
|
18
|
+
Merb::Orms::StrokeDB.connect
|
19
|
+
# Merb::Orms::DataMapper.register_session_type
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
|
2
|
+
# Gem::Specification for Merb_strokedb-1
|
3
|
+
# Originally generated by Echoe
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = %q{merb_strokedb}
|
7
|
+
s.version = "1"
|
8
|
+
|
9
|
+
s.specification_version = 2 if s.respond_to? :specification_version=
|
10
|
+
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.authors = ["elliottcable"]
|
13
|
+
s.date = %q{2008-04-19}
|
14
|
+
s.description = %q{a plugin for Merb, that allows the use of StrokeDB as an ORM within a Merb application}
|
15
|
+
s.email = ["merb_strokedb@elliottcable.com"]
|
16
|
+
s.extra_rdoc_files = ["lib/merb/orms/strokedb/connection.rb", "lib/merb/orms/strokedb/store.example.yml", "lib/merb_strokedb/strokedb.task", "lib/merb_strokedb.rb", "README.mkdn"]
|
17
|
+
s.files = ["example_merb_app/application.rb", "example_merb_app/config/framework.rb", "example_merb_app/config/init.rb", "example_merb_app/config/store.yml", "example_merb_app/views/test.html.haml", "lib/merb/orms/strokedb/connection.rb", "lib/merb/orms/strokedb/store.example.yml", "lib/merb_strokedb/strokedb.task", "lib/merb_strokedb.rb", "README.mkdn", "task/echoe.task", ".manifest", "merb_strokedb.gemspec"]
|
18
|
+
s.has_rdoc = true
|
19
|
+
s.homepage = %q{http://find.elliottcable.name/merb_strokedb}
|
20
|
+
s.post_install_message = %q{ - Thanks for installing merb_strokedb!
|
21
|
+
- Add this to your config/init.rb to get started:
|
22
|
+
- use_orm :strokedb}
|
23
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Merb_strokedb", "--main", "README.mkdn"]
|
24
|
+
s.require_paths = ["lib"]
|
25
|
+
s.rubyforge_project = %q{merb-strokedb}
|
26
|
+
s.rubygems_version = %q{1.1.1}
|
27
|
+
s.summary = %q{StrokeDB plugin for Merb}
|
28
|
+
|
29
|
+
s.add_dependency(%q<merb-core>, [">= 0"])
|
30
|
+
s.add_dependency(%q<strokedb>, [">= 0"])
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
# # Original Rakefile source (requires the Echoe gem):
|
35
|
+
#
|
36
|
+
# require 'rubygems'; require 'merb-core'
|
37
|
+
# $:.unshift(File.dirname(__FILE__) + '/lib'); require 'merb_strokedb'
|
38
|
+
# Dir['task/**/*.task'].each {|t| load t}
|
39
|
+
#
|
40
|
+
# Echoe.taskify do
|
41
|
+
# Echoe.new('merb_strokedb', Merb::Orms::StrokeDB::VERSION) do |g|
|
42
|
+
# g.author = ['elliottcable']
|
43
|
+
# g.email = ['merb_strokedb@elliottcable.com']
|
44
|
+
# g.summary = 'StrokeDB plugin for Merb'
|
45
|
+
# g.url = 'http://find.elliottcable.name/merb_strokedb'
|
46
|
+
# g.description = 'a plugin for Merb, that allows the use of StrokeDB as an ORM within a Merb application'
|
47
|
+
# g.dependencies = ['merb-core', 'strokedb']
|
48
|
+
# g.manifest_name = '.manifest'
|
49
|
+
# g.ignore_pattern = /(^\.git|^example_merb_app\/(db|log))/
|
50
|
+
# g.project = 'merb-strokedb'
|
51
|
+
# g.install_message = " - Thanks for installing merb_strokedb!\n" +
|
52
|
+
# " - Add this to your config/init.rb to get started:\n"+
|
53
|
+
# " - use_orm :strokedb"
|
54
|
+
# end
|
55
|
+
#
|
56
|
+
# desc 'tests packaged files to ensure they are all present'
|
57
|
+
# task :verify => :package do
|
58
|
+
# # An error message will be displayed if files are missing
|
59
|
+
# if system %(ruby -e "require 'rubygems'; require 'merb-core'; require 'pkg/merb_strokedb-#{Merb::Orms::StrokeDB::VERSION}/lib/merb_strokedb'")
|
60
|
+
# puts "\nThe library files are present"
|
61
|
+
# end
|
62
|
+
# end
|
63
|
+
#
|
64
|
+
# # desc 'Run specs, clean tree, update manifest, run coverage, and install gem!'
|
65
|
+
# desc 'Clean tree, update manifest, and install gem!'
|
66
|
+
# task :magic => [:clean, :manifest, :install]
|
67
|
+
# end
|
data/task/echoe.task
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
class Echoe
|
2
|
+
def self.taskify(&block)
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'echoe'
|
6
|
+
yield
|
7
|
+
rescue LoadError
|
8
|
+
puts "(You need to install the echoe and rspec gems if you wish to" +
|
9
|
+
" perform meta-gem operations, such as installing from source or" +
|
10
|
+
" running specs)"
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
metadata
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: merb_strokedb
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: "1"
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- elliottcable
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-04-19 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: merb-core
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "0"
|
23
|
+
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: strokedb
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: "0"
|
32
|
+
version:
|
33
|
+
description: a plugin for Merb, that allows the use of StrokeDB as an ORM within a Merb application
|
34
|
+
email:
|
35
|
+
- merb_strokedb@elliottcable.com
|
36
|
+
executables: []
|
37
|
+
|
38
|
+
extensions: []
|
39
|
+
|
40
|
+
extra_rdoc_files:
|
41
|
+
- lib/merb/orms/strokedb/connection.rb
|
42
|
+
- lib/merb/orms/strokedb/store.example.yml
|
43
|
+
- lib/merb_strokedb/strokedb.task
|
44
|
+
- lib/merb_strokedb.rb
|
45
|
+
- README.mkdn
|
46
|
+
files:
|
47
|
+
- example_merb_app/application.rb
|
48
|
+
- example_merb_app/config/framework.rb
|
49
|
+
- example_merb_app/config/init.rb
|
50
|
+
- example_merb_app/config/store.yml
|
51
|
+
- example_merb_app/views/test.html.haml
|
52
|
+
- lib/merb/orms/strokedb/connection.rb
|
53
|
+
- lib/merb/orms/strokedb/store.example.yml
|
54
|
+
- lib/merb_strokedb/strokedb.task
|
55
|
+
- lib/merb_strokedb.rb
|
56
|
+
- README.mkdn
|
57
|
+
- task/echoe.task
|
58
|
+
- .manifest
|
59
|
+
- merb_strokedb.gemspec
|
60
|
+
has_rdoc: true
|
61
|
+
homepage: http://find.elliottcable.name/merb_strokedb
|
62
|
+
post_install_message: " - Thanks for installing merb_strokedb!\n - Add this to your config/init.rb to get started:\n - use_orm :strokedb"
|
63
|
+
rdoc_options:
|
64
|
+
- --line-numbers
|
65
|
+
- --inline-source
|
66
|
+
- --title
|
67
|
+
- Merb_strokedb
|
68
|
+
- --main
|
69
|
+
- README.mkdn
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: "0"
|
77
|
+
version:
|
78
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: "0"
|
83
|
+
version:
|
84
|
+
requirements: []
|
85
|
+
|
86
|
+
rubyforge_project: merb-strokedb
|
87
|
+
rubygems_version: 1.1.1
|
88
|
+
signing_key:
|
89
|
+
specification_version: 2
|
90
|
+
summary: StrokeDB plugin for Merb
|
91
|
+
test_files: []
|
92
|
+
|