merb_sequel 0.5 → 0.9.2
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/Rakefile +12 -6
- data/lib/merb/orms/sequel/connection.rb +12 -9
- data/lib/merb/orms/sequel/{database.sample.yml → database.yml.sample} +0 -0
- data/lib/merb/session/sequel_session.rb +5 -4
- data/lib/merb_sequel.rb +13 -8
- data/lib/merb_sequel/merbtasks.rb +40 -0
- data/sequel_generators/database_sessions_migration/USAGE +5 -0
- data/sequel_generators/database_sessions_migration/database_sessions_migration_generator.rb +53 -0
- data/{lib/merb/session/001_add_sessions_table.rb → sequel_generators/database_sessions_migration/templates/sessions_migration.erb} +0 -0
- data/sequel_generators/migration/migration_generator.rb +37 -9
- data/sequel_generators/migration/templates/{new_migration.erb → schema/migrations/%migration_file_name%.rb} +4 -4
- data/sequel_generators/model/model_generator.rb +36 -11
- data/sequel_generators/model/templates/app/models/%model_file_name%.rb +2 -0
- data/sequel_generators/resource_controller/resource_controller_generator.rb +66 -19
- data/sequel_generators/resource_controller/templates/app/controllers/%controller_file_name%.rb +68 -0
- data/sequel_generators/resource_controller/templates/app/helpers/%controller_file_name%_helper.rb +16 -0
- data/sequel_generators/resource_controller/templates/app/views/%controller_file_name%/edit.html.erb +3 -0
- data/sequel_generators/resource_controller/templates/app/views/%controller_file_name%/index.html.erb +3 -0
- data/sequel_generators/resource_controller/templates/app/views/%controller_file_name%/new.html.erb +3 -0
- data/sequel_generators/resource_controller/templates/app/views/%controller_file_name%/show.html.erb +3 -0
- metadata +98 -77
- data/lib/merbtasks.rb +0 -34
- data/sequel_generators/model/templates/sequel_model_template.erb +0 -2
- data/sequel_generators/resource_controller/templates/controller.rb +0 -56
- data/sequel_generators/resource_controller/templates/edit.html.erb +0 -1
- data/sequel_generators/resource_controller/templates/helper.rb +0 -5
- data/sequel_generators/resource_controller/templates/index.html.erb +0 -1
- data/sequel_generators/resource_controller/templates/new.html.erb +0 -1
- data/sequel_generators/resource_controller/templates/show.html.erb +0 -1
data/Rakefile
CHANGED
@@ -3,7 +3,7 @@ require "rake/gempackagetask"
|
|
3
3
|
|
4
4
|
PLUGIN = "merb_sequel"
|
5
5
|
NAME = "merb_sequel"
|
6
|
-
VERSION = "0.
|
6
|
+
VERSION = "0.9.2"
|
7
7
|
AUTHOR = "Wayne E. Seguin, Lance Carlson"
|
8
8
|
EMAIL = "wayneeseguin@gmail.com, lancecarlson@gmail.com"
|
9
9
|
HOMEPAGE = "http://merb-plugins.rubyforge.org/merb_sequel/"
|
@@ -23,21 +23,27 @@ specification = Gem::Specification.new do |spec|
|
|
23
23
|
spec.require_path = "lib"
|
24
24
|
spec.extra_rdoc_files = ["README", "LICENSE", 'TODO']
|
25
25
|
# Dependencies
|
26
|
-
spec.add_dependency("merb", ">= 0.
|
26
|
+
#spec.add_dependency("merb", ">= 0.9")
|
27
|
+
spec.add_dependency("merb-core", ">= 0.9.2") # This will probably only be temporary until there is an official merb gem greater than 0.9
|
27
28
|
spec.add_dependency("sequel", ">= 1.0.0")
|
28
|
-
spec.add_dependency("sequel_model", ">= 0.
|
29
|
+
spec.add_dependency("sequel_model", ">= 0.3.3")
|
29
30
|
spec.files = %w(LICENSE README Rakefile TODO) + Dir.glob("{lib,specs,sequel_generators}/**/*")
|
30
31
|
end
|
31
32
|
|
33
|
+
windows = (PLATFORM =~ /win32|cygwin/) rescue nil
|
34
|
+
|
35
|
+
SUDO = windows ? "" : "sudo"
|
36
|
+
|
32
37
|
Rake::GemPackageTask.new(specification) do |package|
|
33
38
|
package.gem_spec = specification
|
34
39
|
end
|
35
40
|
|
36
|
-
|
37
|
-
|
38
|
-
sh %{
|
41
|
+
desc "Install merb_sequel"
|
42
|
+
task :install => :package do
|
43
|
+
sh %{#{SUDO} gem install pkg/#{NAME}-#{VERSION} --no-rdoc --no-ri --no-update-sources}
|
39
44
|
end
|
40
45
|
|
46
|
+
desc 'Release the current version on rubyforge'
|
41
47
|
task :release => :package do
|
42
48
|
sh %{rubyforge add_release merb #{PLUGIN} #{VERSION} pkg/#{NAME}-#{VERSION}.gem}
|
43
49
|
end
|
@@ -7,8 +7,8 @@ module Merb
|
|
7
7
|
class << self
|
8
8
|
|
9
9
|
def config_file() Merb.root / "config" / "database.yml" end
|
10
|
-
def sample_dest() Merb.root / "config" / "database.sample
|
11
|
-
def sample_source() File.dirname(__FILE__) / "database.sample
|
10
|
+
def sample_dest() Merb.root / "config" / "database.yml.sample" end
|
11
|
+
def sample_source() File.dirname(__FILE__) / "database.yml.sample" end
|
12
12
|
|
13
13
|
def copy_sample_config
|
14
14
|
FileUtils.cp sample_source, sample_dest unless File.exists?(sample_dest)
|
@@ -36,14 +36,15 @@ module Merb
|
|
36
36
|
require "sequel_model"
|
37
37
|
|
38
38
|
if File.exists?(config_file)
|
39
|
-
|
39
|
+
Merb.logger.info!("Connecting to the '#{config[:database]}' database on '#{config[:host]}' using '#{config[:adapter]}' ...")
|
40
40
|
connection = ::Sequel.connect(config_options(config))
|
41
|
-
Merb.logger.error("Connection Error: #{e}") unless connection
|
41
|
+
Merb.logger.error!("Connection Error: #{e}") unless connection
|
42
42
|
connection
|
43
43
|
else
|
44
44
|
copy_sample_config
|
45
|
-
|
46
|
-
|
45
|
+
Merb.logger.set_log(STDERR)
|
46
|
+
Merb.logger.error! "No database.yml file found in #{Merb.root}/config."
|
47
|
+
Merb.logger.error! "A sample file was created called config/database.sample.yml for you to copy and edit."
|
47
48
|
exit(1)
|
48
49
|
end
|
49
50
|
|
@@ -67,9 +68,11 @@ module Merb
|
|
67
68
|
# Registering this ORM lets the user choose sequel as a session store
|
68
69
|
# in merb.yml's session_store: option.
|
69
70
|
def register_session_type
|
70
|
-
Merb
|
71
|
-
|
72
|
-
|
71
|
+
Merb.register_session_type(
|
72
|
+
"sequel",
|
73
|
+
"merb/session/sequel_session",
|
74
|
+
"Using Sequel database sessions"
|
75
|
+
)
|
73
76
|
end
|
74
77
|
|
75
78
|
end
|
File without changes
|
@@ -3,9 +3,7 @@ require "base64"
|
|
3
3
|
module Merb
|
4
4
|
|
5
5
|
module SessionMixin
|
6
|
-
|
7
6
|
def setup_session
|
8
|
-
Merb.logger.info("Setting up session")
|
9
7
|
before = cookies[_session_id_key]
|
10
8
|
request.session, cookies[_session_id_key] = Merb::SequelSession.persist(cookies[_session_id_key])
|
11
9
|
@_fingerprint = Marshal.dump(request.session.data).hash
|
@@ -13,9 +11,12 @@ module Merb
|
|
13
11
|
end
|
14
12
|
|
15
13
|
def finalize_session
|
16
|
-
Merb.logger.info("Finalize session")
|
17
14
|
request.session.save if @_fingerprint != Marshal.dump(request.session.data).hash
|
18
|
-
set_cookie(_session_id_key, request.session.values[:session_id], _session_expiry) if (@_new_cookie || request.session.needs_new_cookie)
|
15
|
+
set_cookie(_session_id_key, request.session.values[:session_id], Time.now + _session_expiry) if (@_new_cookie || request.session.needs_new_cookie)
|
16
|
+
end
|
17
|
+
|
18
|
+
def session_store_type
|
19
|
+
"sequel"
|
19
20
|
end
|
20
21
|
|
21
22
|
end
|
data/lib/merb_sequel.rb
CHANGED
@@ -1,12 +1,17 @@
|
|
1
|
-
# make sure we're running inside Merb
|
2
1
|
if defined?(Merb::Plugins)
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
2
|
+
Merb::Plugins.config[:merb_sequel] = {}
|
3
|
+
require File.join(File.dirname(__FILE__) / "merb" / "orms" / "sequel" / "connection")
|
4
|
+
Merb::Plugins.add_rakefiles "merb_sequel" / "merbtasks"
|
5
|
+
|
6
|
+
class Merb::Orms::Sequel::Connect < Merb::BootLoader
|
7
|
+
|
8
|
+
after BeforeAppRuns
|
9
|
+
|
10
|
+
def self.run
|
11
|
+
Merb::Orms::Sequel.connect
|
12
|
+
Merb::Orms::Sequel.register_session_type
|
13
|
+
end
|
14
|
+
|
9
15
|
end
|
10
16
|
|
11
|
-
Merb::Plugins.add_rakefiles "merbtasks"
|
12
17
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
|
3
|
+
namespace :sequel do
|
4
|
+
|
5
|
+
task :merb_start do
|
6
|
+
Merb.start :adapter => 'runner',
|
7
|
+
:environment => ENV['MERB_ENV'] || 'development'
|
8
|
+
end
|
9
|
+
|
10
|
+
namespace :db do
|
11
|
+
|
12
|
+
desc "Perform migration using migrations in schema/migrations"
|
13
|
+
task :migrate => :merb_start do
|
14
|
+
Sequel::Migrator.apply(Merb::Orms::Sequel.connect, "schema/migrations", ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
namespace :sessions do
|
20
|
+
|
21
|
+
desc "Creates session migration"
|
22
|
+
task :create => :merb_start do
|
23
|
+
migration_exists = Dir[File.join(Merb.root,"schema", "migrations", "*.rb")].detect{ |f| f =~ /database_sessions\.rb/ }
|
24
|
+
if migration_exists
|
25
|
+
puts "\nThe Session Migration File already exists\n\n"
|
26
|
+
else
|
27
|
+
sh %{merb-gen database_sessions_migration}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
desc "Clears sessions"
|
32
|
+
task :clear => :merb_start do
|
33
|
+
table_name = ((Merb::Plugins.config[:sequel] || {})[:session_table_name] || "sessions")
|
34
|
+
|
35
|
+
Merb::Orms::Sequel.connect.execute("DELETE FROM #{table_name}")
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class DatabaseSessionsMigrationGenerator < Merb::GeneratorBase
|
2
|
+
|
3
|
+
default_options :author => nil
|
4
|
+
|
5
|
+
def initialize(runtime_args, runtime_options = {})
|
6
|
+
# put somthing into the runtime_args so that super doesn't show the
|
7
|
+
# description
|
8
|
+
runtime_args.push ""
|
9
|
+
super
|
10
|
+
@name = 'database_sessions'
|
11
|
+
end
|
12
|
+
|
13
|
+
def manifest
|
14
|
+
record do |m|
|
15
|
+
# Ensure appropriate folder(s) exists
|
16
|
+
m.directory 'schema/migrations'
|
17
|
+
|
18
|
+
# Create stubs
|
19
|
+
highest_migration = Dir[Dir.pwd+'/schema/migrations/*'].map{|f| File.basename(f) =~ /^(\d+)/; $1}.max
|
20
|
+
filename = format("%03d_%s", (highest_migration.to_i+1), @name.snake_case)
|
21
|
+
m.template "sessions_migration.erb", "schema/migrations/#{filename}.rb"
|
22
|
+
puts banner
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
protected
|
28
|
+
def banner
|
29
|
+
<<-EOS
|
30
|
+
A migration to add sessions to your database has been created.
|
31
|
+
Run 'rake sequel:db:migrate' to add the sessions migration to your database.
|
32
|
+
|
33
|
+
EOS
|
34
|
+
end
|
35
|
+
|
36
|
+
def add_options!(opts)
|
37
|
+
# opts.separator ''
|
38
|
+
# opts.separator 'Options:'
|
39
|
+
# For each option below, place the default
|
40
|
+
# at the top of the file next to "default_options"
|
41
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
42
|
+
# "Some comment about this option",
|
43
|
+
# "Default: none") { |options[:author]| }
|
44
|
+
# opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
45
|
+
end
|
46
|
+
|
47
|
+
def extract_options
|
48
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
49
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
50
|
+
# raw instance variable value.
|
51
|
+
# @author = options[:author]
|
52
|
+
end
|
53
|
+
end
|
File without changes
|
@@ -1,14 +1,42 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
class MigrationGenerator < Merb::GeneratorHelpers::MigrationGeneratorBase
|
1
|
+
class MigrationGenerator < Merb::GeneratorBase
|
2
|
+
attr_reader :model_attributes, :model_class_name, :model_file_name, :table_name
|
4
3
|
|
5
|
-
def initialize(
|
6
|
-
|
7
|
-
|
4
|
+
def initialize(args, runtime_args = {})
|
5
|
+
@base = File.dirname(__FILE__)
|
6
|
+
super
|
7
|
+
@model_file_name = args.shift.snake_case
|
8
|
+
@table_name = @model_file_name.pluralize
|
9
|
+
@model_class_name = @model_file_name.to_const_string
|
10
|
+
@model_attributes = Hash[*(args.map{|a| a.split(":") }.flatten)]
|
8
11
|
end
|
9
12
|
|
10
|
-
def
|
11
|
-
|
12
|
-
|
13
|
+
def manifest
|
14
|
+
record do |m|
|
15
|
+
@m = m
|
16
|
+
|
17
|
+
m.directory "schema/migrations"
|
18
|
+
|
19
|
+
current_migration_number = Dir[Dir.pwd+'/schema/migrations/*'].map{|f| File.basename(f) =~ /^(\d+)/; $1}.max
|
20
|
+
@migration_file_name = format("%03d_%s", (current_migration_number.to_i+1), model_file_name)
|
13
21
|
|
22
|
+
@assigns = { :model_file_name => model_file_name,
|
23
|
+
:model_attributes => model_attributes,
|
24
|
+
:model_class_name => model_class_name,
|
25
|
+
:table_name => table_name,
|
26
|
+
:migration_file_name => @migration_file_name
|
27
|
+
}
|
28
|
+
copy_dirs
|
29
|
+
copy_files
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
protected
|
34
|
+
def banner
|
35
|
+
<<-EOS.split("\n").map{|x| x.strip}.join("\n")
|
36
|
+
Creates a Sequel Migration stub..
|
37
|
+
|
38
|
+
USAGE: #{spec.name}"
|
39
|
+
EOS
|
40
|
+
end
|
41
|
+
|
14
42
|
end
|
@@ -2,15 +2,15 @@
|
|
2
2
|
# http://sequel.rubyforge.org/
|
3
3
|
# http://code.google.com/p/ruby-sequel/wiki/Migrations
|
4
4
|
|
5
|
-
class <%=
|
5
|
+
class <%= model_class_name %>Migration < Sequel::Migration
|
6
6
|
|
7
7
|
def up
|
8
8
|
<%= "create_table :#{table_name} do" if table_name %>
|
9
|
-
<% if
|
9
|
+
<% if model_attributes.empty? -%>
|
10
10
|
primary_key :id
|
11
11
|
<% else -%>
|
12
|
-
<%
|
13
|
-
<%= attribute.
|
12
|
+
<% model_attributes.each do |attribute| -%>
|
13
|
+
<%= attribute.last %> :<%= attribute.first %>
|
14
14
|
<% end -%>
|
15
15
|
<% end -%>
|
16
16
|
<%= "end" if table_name %>
|
@@ -1,16 +1,41 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
class ModelGenerator < Merb::GeneratorHelpers::ModelGeneratorBase
|
1
|
+
class ModelGenerator < Merb::GeneratorBase
|
2
|
+
attr_reader :model_attributes, :model_class_name, :model_file_name, :migration_args
|
4
3
|
|
5
|
-
def initialize(
|
6
|
-
|
7
|
-
@
|
8
|
-
|
9
|
-
@
|
4
|
+
def initialize(args, runtime_args = {})
|
5
|
+
@base = File.dirname(__FILE__)
|
6
|
+
@migration_args = args.dup
|
7
|
+
super
|
8
|
+
@model_file_name = args.shift.snake_case
|
9
|
+
@model_class_name = @model_file_name.to_const_string
|
10
|
+
@model_attributes = Hash[*(args.map{|a| a.split(":") }.flatten)]
|
11
|
+
@model_file_name = "#{@model_class_name.snake_case}"
|
12
|
+
|
13
|
+
|
10
14
|
end
|
11
15
|
|
12
|
-
def
|
13
|
-
|
14
|
-
|
16
|
+
def manifest
|
17
|
+
record do |m|
|
18
|
+
@m = m
|
15
19
|
|
20
|
+
@assigns = { :model_file_name => model_file_name,
|
21
|
+
:model_attributes => model_attributes,
|
22
|
+
:model_class_name => model_class_name
|
23
|
+
}
|
24
|
+
copy_dirs
|
25
|
+
copy_files
|
26
|
+
|
27
|
+
m.dependency "migration", [*self.migration_args]
|
28
|
+
m.dependency "merb_model_test", [model_file_name], @assigns
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
protected
|
33
|
+
def banner
|
34
|
+
<<-EOS.split("\n").map{|x| x.strip}.join("\n")
|
35
|
+
Creates a Sequel Model stub..
|
36
|
+
|
37
|
+
USAGE: #{spec.name}"
|
38
|
+
EOS
|
39
|
+
end
|
40
|
+
|
16
41
|
end
|
@@ -1,27 +1,74 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
class ResourceControllerGenerator < Merb::GeneratorBase
|
2
|
+
|
3
|
+
attr_reader :controller_class_name,
|
4
|
+
:controller_file_name,
|
5
|
+
:controller_base_path,
|
6
|
+
:controller_modules,
|
7
|
+
:model_class_name,
|
8
|
+
:full_controller_const,
|
9
|
+
:singular_model,
|
10
|
+
:plural_model
|
11
|
+
|
12
|
+
def initialize(args, runtime_args = {})
|
13
|
+
@base = File.dirname(__FILE__)
|
14
|
+
|
15
|
+
super
|
16
|
+
name = args.shift
|
17
|
+
nfp = name.snake_case.gsub("::", "/")
|
18
|
+
nfp = nfp.split("/")
|
19
|
+
@model_class_name = nfp.pop.singularize.to_const_string
|
20
|
+
@model_class_name = runtime_args[:model_class_name] if runtime_args[:model_class_name]
|
21
|
+
@singular_model = @model_class_name.snake_case
|
22
|
+
@plural_model = @singular_model.pluralize
|
23
|
+
|
24
|
+
nfp << @plural_model
|
25
|
+
|
26
|
+
@controller_file_name = nfp.join("/")
|
27
|
+
|
28
|
+
# Need to setup the directories
|
29
|
+
unless @controller_file_name == File.basename(@controller_file_name)
|
30
|
+
@controller_base_path = controller_file_name.split("/")[0..-2].join("/")
|
31
|
+
end
|
32
|
+
|
33
|
+
@controller_modules = @controller_file_name.to_const_string.split("::")[0..-2]
|
34
|
+
@controller_class_name = @controller_file_name.to_const_string.split("::").last
|
4
35
|
|
5
|
-
|
6
|
-
runtime_options = args.last.is_a?(Hash) ? args.pop : {}
|
7
|
-
name, *actions = args.flatten
|
8
|
-
runtime_options[:actions] = %w[index show new edit]
|
9
|
-
runtime_options[:test_stub_generator] = "merb_controller_test"
|
10
|
-
super([name], runtime_options)
|
36
|
+
@full_controller_const = ((@controller_modules.dup || []) << @controller_class_name).join("::")
|
11
37
|
end
|
12
|
-
|
13
|
-
def
|
14
|
-
|
38
|
+
|
39
|
+
def manifest
|
40
|
+
record do |m|
|
41
|
+
@m = m
|
42
|
+
|
43
|
+
# Create the controller directory
|
44
|
+
m.directory File.join("app/controllers", controller_base_path) if controller_base_path
|
45
|
+
|
46
|
+
# Create the helpers directory
|
47
|
+
m.directory File.join("app/helpers", controller_base_path) if controller_base_path
|
48
|
+
|
49
|
+
@assigns = {
|
50
|
+
:controller_modules => controller_modules,
|
51
|
+
:controller_class_name => controller_class_name,
|
52
|
+
:controller_file_name => controller_file_name,
|
53
|
+
:controller_base_path => controller_base_path,
|
54
|
+
:full_controller_const => full_controller_const,
|
55
|
+
:model_class_name => model_class_name,
|
56
|
+
:singular_model => singular_model,
|
57
|
+
:plural_model => plural_model
|
58
|
+
}
|
59
|
+
copy_dirs
|
60
|
+
copy_files
|
61
|
+
|
62
|
+
m.dependency "merb_resource_controller_test", [@controller_class_name], @assigns
|
63
|
+
end
|
15
64
|
end
|
16
65
|
|
17
66
|
protected
|
18
|
-
|
19
67
|
def banner
|
20
|
-
<<-EOS
|
21
|
-
|
68
|
+
<<-EOS.split("\n").map{|x| x.strip}.join("\n")
|
69
|
+
Creates a basic Merb resource controller.
|
22
70
|
|
23
|
-
|
24
|
-
|
71
|
+
USAGE: #{spec.name} my_resource
|
72
|
+
EOS
|
25
73
|
end
|
26
|
-
|
27
|
-
end
|
74
|
+
end
|
data/sequel_generators/resource_controller/templates/app/controllers/%controller_file_name%.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
<% counter = 0 -%>
|
2
|
+
<% controller_modules.each_with_index do |mod, i| -%>
|
3
|
+
<%= " " * i %>module <%= mod %>
|
4
|
+
<% counter = i -%>
|
5
|
+
<% end -%>
|
6
|
+
<% counter = counter == 0 ? 0 : (counter + 1) -%>
|
7
|
+
<%= " " * counter %>class <%= controller_class_name %> < Application
|
8
|
+
<%= " " * counter %> # provides :xml, :yaml, :js
|
9
|
+
|
10
|
+
<%= " " * counter %> def index
|
11
|
+
<%= " " * counter %> @<%= plural_model %> = <%= model_class_name %>.all
|
12
|
+
<%= " " * counter %> display @<%= plural_model %>
|
13
|
+
<%= " " * counter %> end
|
14
|
+
|
15
|
+
<%= " " * counter %> def show
|
16
|
+
<%= " " * counter %> @<%= singular_model %> = <%= model_class_name %>[params[:id]]
|
17
|
+
<%= " " * counter %> raise NotFound unless @<%= singular_model %>
|
18
|
+
<%= " " * counter %> display @<%= singular_model %>
|
19
|
+
<%= " " * counter %> end
|
20
|
+
|
21
|
+
<%= " " * counter %> def new
|
22
|
+
<%= " " * counter %> only_provides :html
|
23
|
+
<%= " " * counter %> @<%= singular_model %> = <%= model_class_name %>.new(params[:<%= singular_model %>])
|
24
|
+
<%= " " * counter %> render
|
25
|
+
<%= " " * counter %> end
|
26
|
+
|
27
|
+
<%= " " * counter %> def create
|
28
|
+
<%= " " * counter %> @<%= singular_model %> = <%= model_class_name %>.new(params[:<%= singular_model %>])
|
29
|
+
<%= " " * counter %> if @<%= singular_model %>.save
|
30
|
+
<%= " " * counter %> redirect url(:<%= (controller_modules.collect{|m| m.downcase} << singular_model).join("_") %>, @<%= singular_model %>)
|
31
|
+
<%= " " * counter %> else
|
32
|
+
<%= " " * counter %> render :new
|
33
|
+
<%= " " * counter %> end
|
34
|
+
<%= " " * counter %> end
|
35
|
+
|
36
|
+
<%= " " * counter %> def edit
|
37
|
+
<%= " " * counter %> only_provides :html
|
38
|
+
<%= " " * counter %> @<%= singular_model %> = <%= model_class_name %>[params[:id]]
|
39
|
+
<%= " " * counter %> raise NotFound unless @<%= singular_model %>
|
40
|
+
<%= " " * counter %> render
|
41
|
+
<%= " " * counter %> end
|
42
|
+
|
43
|
+
<%= " " * counter %> def update
|
44
|
+
<%= " " * counter %> @<%= singular_model %> = <%= model_class_name %>[params[:id]]
|
45
|
+
<%= " " * counter %> raise NotFound unless @<%= singular_model %>
|
46
|
+
<%= " " * counter %> if @<%= singular_model %>.update(params[:<%= singular_model %>])
|
47
|
+
<%= " " * counter %> redirect url(:<%= (controller_modules.collect{|m| m.downcase} << singular_model).join("_") %>, @<%= singular_model %>)
|
48
|
+
<%= " " * counter %> else
|
49
|
+
<%= " " * counter %> raise BadRequest
|
50
|
+
<%= " " * counter %> end
|
51
|
+
<%= " " * counter %> end
|
52
|
+
|
53
|
+
<%= " " * counter %> def destroy
|
54
|
+
<%= " " * counter %> @<%= singular_model %> = <%= model_class_name %>[params[:id]]
|
55
|
+
<%= " " * counter %> raise NotFound unless @<%= singular_model %>
|
56
|
+
<%= " " * counter %> if @<%= singular_model %>.destroy
|
57
|
+
<%= " " * counter %> redirect url(:<%= (controller_modules.collect{|m| m.downcase} << singular_model).join("_") %>s)
|
58
|
+
<%= " " * counter %> else
|
59
|
+
<%= " " * counter %> raise BadRequest
|
60
|
+
<%= " " * counter %> end
|
61
|
+
<%= " " * counter %> end
|
62
|
+
|
63
|
+
<%= " " * counter %>end
|
64
|
+
<% counter = counter == 0 ? 0 : (counter - 1) -%>
|
65
|
+
<% controller_modules.reverse.each_with_index do |mod, i| -%>
|
66
|
+
<%= " " * counter %>end # <%= mod %>
|
67
|
+
<% counter = counter - 1 -%>
|
68
|
+
<% end -%>
|
data/sequel_generators/resource_controller/templates/app/helpers/%controller_file_name%_helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
<% counter = 1 -%>
|
2
|
+
module Merb
|
3
|
+
<% controller_modules.each_with_index do |mod, i| -%>
|
4
|
+
<%= " " * i %>module <%= mod %>
|
5
|
+
<% counter = i -%>
|
6
|
+
<% end -%>
|
7
|
+
<% counter = counter == 0 ? 0 : (counter + 1) -%>
|
8
|
+
<%= " " * counter %>module <%= controller_class_name %>Helper
|
9
|
+
|
10
|
+
<%= " " * counter %>end
|
11
|
+
<% counter = counter == 0 ? 0 : (counter - 1) -%>
|
12
|
+
<% controller_modules.reverse.each_with_index do |mod, i| -%>
|
13
|
+
<%= " " * counter %>end # <%= mod %>
|
14
|
+
<% counter = counter - 1 -%>
|
15
|
+
<% end -%>
|
16
|
+
end
|
metadata
CHANGED
@@ -1,109 +1,130 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.0
|
3
|
-
specification_version: 1
|
4
2
|
name: merb_sequel
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version:
|
7
|
-
date: 2008-01-09 00:00:00 -08:00
|
8
|
-
summary: Merb plugin that provides support for Sequel and Sequel::Model
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: wayneeseguin@gmail.com, lancecarlson@gmail.com
|
12
|
-
homepage: http://merb-plugins.rubyforge.org/merb_sequel/
|
13
|
-
rubyforge_project:
|
14
|
-
description: Merb plugin that provides support for Sequel and Sequel::Model
|
15
|
-
autorequire: merb_sequel
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.9.2
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Wayne E. Seguin, Lance Carlson
|
8
|
+
autorequire: merb_sequel
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-03-24 00:00:00 -05: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.9.2
|
23
|
+
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: sequel
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 1.0.0
|
32
|
+
version:
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: sequel_model
|
35
|
+
version_requirement:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.3.3
|
41
|
+
version:
|
42
|
+
description: Merb plugin that provides support for Sequel and Sequel::Model
|
43
|
+
email: wayneeseguin@gmail.com, lancecarlson@gmail.com
|
44
|
+
executables: []
|
45
|
+
|
46
|
+
extensions: []
|
47
|
+
|
48
|
+
extra_rdoc_files:
|
49
|
+
- README
|
50
|
+
- LICENSE
|
51
|
+
- TODO
|
31
52
|
files:
|
32
53
|
- LICENSE
|
33
54
|
- README
|
34
55
|
- Rakefile
|
35
56
|
- TODO
|
36
57
|
- lib/merb
|
37
|
-
- lib/merb_sequel.rb
|
38
|
-
- lib/merbtasks.rb
|
39
58
|
- lib/merb/orms
|
40
|
-
- lib/merb/session
|
41
59
|
- lib/merb/orms/sequel
|
42
60
|
- lib/merb/orms/sequel/connection.rb
|
43
|
-
- lib/merb/orms/sequel/database.sample
|
44
|
-
- lib/merb/session
|
61
|
+
- lib/merb/orms/sequel/database.yml.sample
|
62
|
+
- lib/merb/session
|
45
63
|
- lib/merb/session/sequel_session.rb
|
64
|
+
- lib/merb_sequel
|
65
|
+
- lib/merb_sequel/merbtasks.rb
|
66
|
+
- lib/merb_sequel.rb
|
46
67
|
- specs/merb_sequel_spec.rb
|
47
68
|
- specs/spec_helper.rb
|
69
|
+
- sequel_generators/database_sessions_migration
|
70
|
+
- sequel_generators/database_sessions_migration/database_sessions_migration_generator.rb
|
71
|
+
- sequel_generators/database_sessions_migration/templates
|
72
|
+
- sequel_generators/database_sessions_migration/templates/sessions_migration.erb
|
73
|
+
- sequel_generators/database_sessions_migration/USAGE
|
48
74
|
- sequel_generators/migration
|
49
|
-
- sequel_generators/model
|
50
|
-
- sequel_generators/resource_controller
|
51
75
|
- sequel_generators/migration/migration_generator.rb
|
52
76
|
- sequel_generators/migration/templates
|
77
|
+
- sequel_generators/migration/templates/schema
|
78
|
+
- sequel_generators/migration/templates/schema/migrations
|
79
|
+
- sequel_generators/migration/templates/schema/migrations/%migration_file_name%.rb
|
53
80
|
- sequel_generators/migration/USAGE
|
54
|
-
- sequel_generators/
|
81
|
+
- sequel_generators/model
|
55
82
|
- sequel_generators/model/model_generator.rb
|
56
83
|
- sequel_generators/model/templates
|
84
|
+
- sequel_generators/model/templates/app
|
85
|
+
- sequel_generators/model/templates/app/models
|
86
|
+
- sequel_generators/model/templates/app/models/%model_file_name%.rb
|
57
87
|
- sequel_generators/model/USAGE
|
58
|
-
- sequel_generators/
|
88
|
+
- sequel_generators/resource_controller
|
59
89
|
- sequel_generators/resource_controller/resource_controller_generator.rb
|
60
90
|
- sequel_generators/resource_controller/templates
|
91
|
+
- sequel_generators/resource_controller/templates/app
|
92
|
+
- sequel_generators/resource_controller/templates/app/controllers
|
93
|
+
- sequel_generators/resource_controller/templates/app/controllers/%controller_file_name%.rb
|
94
|
+
- sequel_generators/resource_controller/templates/app/helpers
|
95
|
+
- sequel_generators/resource_controller/templates/app/helpers/%controller_file_name%_helper.rb
|
96
|
+
- sequel_generators/resource_controller/templates/app/views
|
97
|
+
- sequel_generators/resource_controller/templates/app/views/%controller_file_name%
|
98
|
+
- sequel_generators/resource_controller/templates/app/views/%controller_file_name%/edit.html.erb
|
99
|
+
- sequel_generators/resource_controller/templates/app/views/%controller_file_name%/index.html.erb
|
100
|
+
- sequel_generators/resource_controller/templates/app/views/%controller_file_name%/new.html.erb
|
101
|
+
- sequel_generators/resource_controller/templates/app/views/%controller_file_name%/show.html.erb
|
61
102
|
- sequel_generators/resource_controller/USAGE
|
62
|
-
|
63
|
-
-
|
64
|
-
|
65
|
-
- sequel_generators/resource_controller/templates/index.html.erb
|
66
|
-
- sequel_generators/resource_controller/templates/new.html.erb
|
67
|
-
- sequel_generators/resource_controller/templates/show.html.erb
|
68
|
-
test_files: []
|
69
|
-
|
103
|
+
has_rdoc: true
|
104
|
+
homepage: http://merb-plugins.rubyforge.org/merb_sequel/
|
105
|
+
post_install_message:
|
70
106
|
rdoc_options: []
|
71
107
|
|
72
|
-
|
73
|
-
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
108
|
+
require_paths:
|
109
|
+
- lib
|
110
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: "0"
|
115
|
+
version:
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: "0"
|
121
|
+
version:
|
80
122
|
requirements: []
|
81
123
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: "0.5"
|
91
|
-
version:
|
92
|
-
- !ruby/object:Gem::Dependency
|
93
|
-
name: sequel
|
94
|
-
version_requirement:
|
95
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
96
|
-
requirements:
|
97
|
-
- - ">="
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: 1.0.0
|
100
|
-
version:
|
101
|
-
- !ruby/object:Gem::Dependency
|
102
|
-
name: sequel_model
|
103
|
-
version_requirement:
|
104
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
105
|
-
requirements:
|
106
|
-
- - ">="
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
version: "0.2"
|
109
|
-
version:
|
124
|
+
rubyforge_project:
|
125
|
+
rubygems_version: 1.0.1
|
126
|
+
signing_key:
|
127
|
+
specification_version: 2
|
128
|
+
summary: Merb plugin that provides support for Sequel and Sequel::Model
|
129
|
+
test_files: []
|
130
|
+
|
data/lib/merbtasks.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
require "fileutils"
|
2
|
-
|
3
|
-
namespace :sequel do
|
4
|
-
|
5
|
-
namespace :db do
|
6
|
-
|
7
|
-
desc "Perform migration using migrations in schema/migrations"
|
8
|
-
task :migrate => :merb_env do
|
9
|
-
Sequel::Migrator.apply(Merb::Orms::Sequel.connect, "schema/migrations", ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
namespace :sessions do
|
15
|
-
|
16
|
-
desc "Creates session migration"
|
17
|
-
task :create => :merb_env do
|
18
|
-
# TODO: this should not use '001' always...
|
19
|
-
dest = File.join(Merb.root, "schema", "migrations","001_add_sessions_table.rb")
|
20
|
-
source = File.join(File.dirname(__FILE__), "merb", "session","001_add_sessions_table.rb")
|
21
|
-
|
22
|
-
FileUtils.cp source, dest unless File.exists?(dest)
|
23
|
-
end
|
24
|
-
|
25
|
-
desc "Clears sessions"
|
26
|
-
task :clear => :merb_env do
|
27
|
-
table_name = (Merb::Plugins.config[:sequel][:session_table_name] || "sessions")
|
28
|
-
|
29
|
-
Merb::Orms::Sequel.connect.execute("DELETE FROM #{table_name}")
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
<% klass = class_name.singularize -%>
|
2
|
-
<% ivar = class_name.snake_case.singularize -%>
|
3
|
-
class <%= class_name %> < Application
|
4
|
-
|
5
|
-
provides :xml, :js, :yaml
|
6
|
-
|
7
|
-
def index
|
8
|
-
@<%= ivar.pluralize %> = <%= klass %>.all
|
9
|
-
render @<%= ivar.pluralize %>
|
10
|
-
end
|
11
|
-
|
12
|
-
def show
|
13
|
-
@<%= ivar %> = <%= klass %>[params[:id]]
|
14
|
-
render @<%= ivar %>
|
15
|
-
end
|
16
|
-
|
17
|
-
def new
|
18
|
-
only_provides :html
|
19
|
-
@<%= ivar %> = <%= klass %>.new(params[:<%= ivar %>])
|
20
|
-
render
|
21
|
-
end
|
22
|
-
|
23
|
-
def create
|
24
|
-
@<%= ivar %> = <%= klass %>.new(params[:<%= ivar %>])
|
25
|
-
if @<%= ivar %>.save
|
26
|
-
redirect url(:<%= ivar %>, @<%= ivar %>)
|
27
|
-
else
|
28
|
-
render :action => :new
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def edit
|
33
|
-
only_provides :html
|
34
|
-
@<%= ivar %> = <%= klass %>[params[:id]]
|
35
|
-
render
|
36
|
-
end
|
37
|
-
|
38
|
-
def update
|
39
|
-
@<%= ivar %> = <%= klass %>[params[:id]]
|
40
|
-
if @<%= ivar %>.update(params[:<%= ivar %>])
|
41
|
-
redirect url(:<%= ivar %>, @<%= ivar %>)
|
42
|
-
else
|
43
|
-
raise BadRequest
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def destroy
|
48
|
-
@<%= ivar %> = <%= klass %>[params[:id]]
|
49
|
-
if @<%= ivar %>.destroy
|
50
|
-
redirect url(:<%= ivar %>s)
|
51
|
-
else
|
52
|
-
raise BadRequest
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
Edit for <%= class_name %>
|
@@ -1 +0,0 @@
|
|
1
|
-
Index for <%= class_name %>
|
@@ -1 +0,0 @@
|
|
1
|
-
New for <%= class_name %>
|
@@ -1 +0,0 @@
|
|
1
|
-
Show for <%= class_name %>
|