tog-tog 0.2.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/CHANGELOG.md +13 -0
- data/MIT-LICENSE +19 -0
- data/Manifest.txt +31 -0
- data/POST_INSTALL +3 -0
- data/README.txt +27 -0
- data/Rakefile +9 -0
- data/app_generators/togify/USAGE +5 -0
- data/app_generators/togify/templates/integrate_tog.rb +9 -0
- data/app_generators/togify/togify_generator.rb +145 -0
- data/bin/togify +16 -0
- data/config/hoe.rb +44 -0
- data/config/requirements.rb +15 -0
- data/generators/tog_migration/USAGE +5 -0
- data/generators/tog_migration/templates/migration.rb +9 -0
- data/generators/tog_migration/tog_migration_generator.rb +19 -0
- data/generators/tog_plugin/USAGE +5 -0
- data/generators/tog_plugin/tog_plugin_generator.rb +53 -0
- data/lib/tasks/platform.rake +104 -0
- data/lib/tasks/tog.rb +2 -0
- data/lib/tog/version.rb +18 -0
- data/lib/tog.rb +7 -0
- data/test/templates/Rakefile +10 -0
- data/test/templates/environment.rb +9 -0
- data/test/templates/routes.rb +4 -0
- data/test/test_generator_helper.rb +58 -0
- data/test/test_helper.rb +2 -0
- data/test/test_rake_tasks.rb +46 -0
- data/test/test_tog.rb +11 -0
- data/test/test_tog_plugin_generator.rb +45 -0
- data/test/test_togify_generator.rb +63 -0
- data/tog.gemspec +48 -0
- metadata +133 -0
data/CHANGELOG.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Edge
|
2
|
+
----
|
3
|
+
* Rubigen dependency added to gemspec.
|
4
|
+
0.2.1
|
5
|
+
----
|
6
|
+
* [#89 status:resolved] From now tog:plugins:copy_resources don't copy .svn dirs to app's public directory...
|
7
|
+
* tog-desert dependency added.
|
8
|
+
* New `--development` flag on togify. This'll clone the tog core plugins from `git@github.com:tog/#{plugin}.git` instead of `git://github.com/tog/#{plugin}.git` allowing developers to change tog plugins inside a togified app.
|
9
|
+
|
10
|
+
|
11
|
+
0.2.0
|
12
|
+
-----
|
13
|
+
* Initial public code release
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2008 Keras Software Development
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
data/Manifest.txt
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
CHANGELOG.md
|
2
|
+
MIT-LICENSE
|
3
|
+
Manifest.txt
|
4
|
+
POST_INSTALL
|
5
|
+
README.txt
|
6
|
+
Rakefile
|
7
|
+
app_generators/togify/USAGE
|
8
|
+
app_generators/togify/templates/integrate_tog.rb
|
9
|
+
app_generators/togify/togify_generator.rb
|
10
|
+
bin/togify
|
11
|
+
config/hoe.rb
|
12
|
+
config/requirements.rb
|
13
|
+
generators/tog_migration/USAGE
|
14
|
+
generators/tog_migration/templates/migration.rb
|
15
|
+
generators/tog_migration/tog_migration_generator.rb
|
16
|
+
generators/tog_plugin/USAGE
|
17
|
+
generators/tog_plugin/tog_plugin_generator.rb
|
18
|
+
lib/tasks/platform.rake
|
19
|
+
lib/tasks/tog.rb
|
20
|
+
lib/tog.rb
|
21
|
+
lib/tog/version.rb
|
22
|
+
test/templates/Rakefile
|
23
|
+
test/templates/environment.rb
|
24
|
+
test/templates/routes.rb
|
25
|
+
test/test_generator_helper.rb
|
26
|
+
test/test_helper.rb
|
27
|
+
test/test_rake_tasks.rb
|
28
|
+
test/test_tog.rb
|
29
|
+
test/test_tog_plugin_generator.rb
|
30
|
+
test/test_togify_generator.rb
|
31
|
+
tog.gemspec
|
data/POST_INSTALL
ADDED
data/README.txt
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
tog
|
2
|
+
============
|
3
|
+
tog is the gem that boostraps the process of _togifing_ your app/site.
|
4
|
+
|
5
|
+
Install
|
6
|
+
-------
|
7
|
+
|
8
|
+
<pre>sudo gem install tog</pre>
|
9
|
+
|
10
|
+
Or from source (you will need Hoe >=1.5.3 and mislav-will_paginate ~> 2.3.2):
|
11
|
+
|
12
|
+
<pre>
|
13
|
+
git clone git@github.com:tog/tog.git
|
14
|
+
cd tog
|
15
|
+
rake install_gem
|
16
|
+
</pre>
|
17
|
+
|
18
|
+
|
19
|
+
More
|
20
|
+
-------
|
21
|
+
|
22
|
+
[http://github.com/tog/tog](http://github.com/tog/tog)
|
23
|
+
|
24
|
+
[http://github.com/tog/tog/wikis](http://github.com/tog/tog/wikis)
|
25
|
+
|
26
|
+
|
27
|
+
Copyright (c) 2008 Keras Software Development, released under the MIT license
|
data/Rakefile
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
class <%= migration_name %> < ActiveRecord::Migration
|
2
|
+
def self.up<% plugins.each do |plugin| %>
|
3
|
+
migrate_plugin "<%= plugin[:name] %>", <%= plugin[:current_migration] %><%- end %>
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.down<% plugins.reverse.each do |plugin| %>
|
7
|
+
migrate_plugin "<%= plugin[:name] %>", 0 <%- end %>
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,145 @@
|
|
1
|
+
class TogifyGenerator < RubiGen::Base
|
2
|
+
|
3
|
+
DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
|
4
|
+
Config::CONFIG['ruby_install_name'])
|
5
|
+
|
6
|
+
default_options :author => nil
|
7
|
+
|
8
|
+
attr_reader :name
|
9
|
+
|
10
|
+
def initialize(runtime_args, runtime_options = {})
|
11
|
+
super
|
12
|
+
usage if args.empty?
|
13
|
+
@destination_root = File.expand_path(args.shift)
|
14
|
+
@name = base_name
|
15
|
+
extract_options
|
16
|
+
end
|
17
|
+
|
18
|
+
def manifest
|
19
|
+
record do |m|
|
20
|
+
BASEDIRS.each { |path| m.directory path }
|
21
|
+
|
22
|
+
# Include tog rake tasks on the app
|
23
|
+
include_tog_rake_tasks("#{destination_root}/Rakefile")
|
24
|
+
|
25
|
+
# Install desert dependency
|
26
|
+
require_desert_on_environment("#{destination_root}/config/environment.rb")
|
27
|
+
|
28
|
+
# PLugins
|
29
|
+
plugins = install_default_plugins
|
30
|
+
|
31
|
+
# Migrations
|
32
|
+
m.migration_template 'integrate_tog.rb', 'db/migrate', :assigns => {
|
33
|
+
:migration_name => "IntegrateTog",
|
34
|
+
:plugins => plugins
|
35
|
+
},:migration_file_name => 'integrate_tog'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
protected
|
40
|
+
def banner
|
41
|
+
<<-EOS
|
42
|
+
Apply tog platform to an existing Rails app
|
43
|
+
|
44
|
+
USAGE: #{spec.name} name
|
45
|
+
EOS
|
46
|
+
end
|
47
|
+
|
48
|
+
def add_options!(opts)
|
49
|
+
opts.separator ''
|
50
|
+
opts.separator 'Options:'
|
51
|
+
# For each option below, place the default
|
52
|
+
# at the top of the file next to "default_options"
|
53
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
54
|
+
# "Some comment about this option",
|
55
|
+
# "Default: none") { |options[:author]| }
|
56
|
+
opts.on("--skip-tog_user",
|
57
|
+
"Don't add tog_user in the tog integration process. Use this if you have a User model and signup process already working") { |v| options[:skip_tog_user] = v }
|
58
|
+
opts.on("--development",
|
59
|
+
"Clone the repositories from the private clone urls allowing the developers to develop the plugins on a togified app.") { |v| options[:development] = v }
|
60
|
+
opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
61
|
+
end
|
62
|
+
|
63
|
+
def extract_options
|
64
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
65
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
66
|
+
# raw instance variable value.
|
67
|
+
# @author = options[:author]
|
68
|
+
end
|
69
|
+
|
70
|
+
def include_tog_rake_tasks(rakefile)
|
71
|
+
sentinel = "require 'tasks/rails'"
|
72
|
+
logger.create "require tog rake tasks"
|
73
|
+
unless options[:pretend]
|
74
|
+
gsub_file rakefile, /(#{Regexp.escape(sentinel)})/mi do |match|
|
75
|
+
"#{match}\n\nrequire 'tasks/tog'\n"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
def require_desert_on_environment(env_file)
|
82
|
+
sentinel = 'Rails::Initializer.run do |config|'
|
83
|
+
logger.create "require 'desert' on environment"
|
84
|
+
unless options[:pretend]
|
85
|
+
gsub_file env_file, /(#{Regexp.escape(sentinel)})/mi do |match|
|
86
|
+
"require 'desert'\n#{match}\n "
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
# Tog plugins
|
92
|
+
def default_plugins
|
93
|
+
plugins = %w{ tog_core }
|
94
|
+
plugins << "tog_user" unless options[:skip_tog_user]
|
95
|
+
plugins += %w{tog_social tog_mail}
|
96
|
+
end
|
97
|
+
|
98
|
+
def install_default_plugins
|
99
|
+
default_plugins.collect{|plugin|
|
100
|
+
plugin_path = "#{destination_root}/vendor/plugins/#{plugin}"
|
101
|
+
checkout_code(plugin_path, plugin)
|
102
|
+
logger.create "vendor/plugins/#{plugin}"
|
103
|
+
route_from_plugins("#{destination_root}/config/routes.rb", plugin)
|
104
|
+
{:name => plugin,:current_migration => current_migration_number(plugin_path) }
|
105
|
+
}
|
106
|
+
end
|
107
|
+
|
108
|
+
def checkout_code(plugin_path, plugin)
|
109
|
+
repository = options[:development] ? "git@github.com:tog/#{plugin}.git": "git://github.com/tog/#{plugin}.git"
|
110
|
+
revision = "head"
|
111
|
+
|
112
|
+
FileUtils.rm_rf(plugin_path)
|
113
|
+
system("git clone #{repository} #{plugin_path}")
|
114
|
+
end
|
115
|
+
def current_migration_number(plugin_path)
|
116
|
+
Dir.glob("#{plugin_path}/db/migrate/*.rb").inject(0) do |max, file_path|
|
117
|
+
n = File.basename(file_path).split('_', 2).first.to_i
|
118
|
+
if n > max then n else max end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def route_from_plugins(routes_file, plugin)
|
123
|
+
sentinel = 'ActionController::Routing::Routes.draw do |map|'
|
124
|
+
logger.route "map.routes_from_plugin #{plugin}"
|
125
|
+
unless options[:pretend]
|
126
|
+
gsub_file routes_file, /(#{Regexp.escape(sentinel)})/mi do |match|
|
127
|
+
"#{match}\n map.routes_from_plugin '#{plugin}'\n"
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
def gsub_file(path, regexp, *args, &block)
|
132
|
+
content = File.read(path).gsub(regexp, *args, &block)
|
133
|
+
File.open(path, 'wb') { |file| file.write(content) }
|
134
|
+
end
|
135
|
+
|
136
|
+
BASEDIRS = %w(
|
137
|
+
config
|
138
|
+
db
|
139
|
+
db/migrate
|
140
|
+
lib
|
141
|
+
lib/tasks
|
142
|
+
vendor
|
143
|
+
vendor/plugins
|
144
|
+
)
|
145
|
+
end
|
data/bin/togify
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'rubigen'
|
5
|
+
|
6
|
+
if %w(-v --version).include? ARGV.first
|
7
|
+
require 'tog/version'
|
8
|
+
puts "#{File.basename($0)} #{Tog::VERSION::STRING}"
|
9
|
+
exit(0)
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'rubigen/scripts/generate'
|
13
|
+
source = RubiGen::PathSource.new(:application, File.join(File.dirname(__FILE__), "../app_generators"))
|
14
|
+
RubiGen::Base.reset_sources
|
15
|
+
RubiGen::Base.append_sources source
|
16
|
+
RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'togify')
|
data/config/hoe.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'tog/version'
|
2
|
+
|
3
|
+
DEVELOPERS = [
|
4
|
+
["Aitor García", "aitor@linkingpaths.com"],
|
5
|
+
["Alberto Molpeceres", "alberto@linkingpaths.com"],
|
6
|
+
["Roberto Salicio", "roberto@linkingpaths.com"]
|
7
|
+
]
|
8
|
+
|
9
|
+
GEM_NAME = 'tog'
|
10
|
+
EXTRA_DEPENDENCIES = [
|
11
|
+
['mislav-will_paginate', '>= 2.3.2'],
|
12
|
+
['rubigen', '>= 1.3.2'],
|
13
|
+
['tog-desert', '>= 0.3.4']
|
14
|
+
]
|
15
|
+
|
16
|
+
REV = nil
|
17
|
+
# UNCOMMENT IF REQUIRED:
|
18
|
+
# REV = YAML.load(`svn info`)['Revision']
|
19
|
+
VERS = Tog::VERSION::STRING + (REV ? ".#{REV}" : "")
|
20
|
+
|
21
|
+
class Hoe
|
22
|
+
def extra_deps
|
23
|
+
@extra_deps.reject! { |x| Array(x).first == 'hoe' }
|
24
|
+
@extra_deps
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# Generate all the Rake tasks
|
29
|
+
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
30
|
+
$hoe = Hoe.new(GEM_NAME, VERS) do |p|
|
31
|
+
DEVELOPERS.each{|dev|
|
32
|
+
p.developer(dev[0], dev[1])
|
33
|
+
}
|
34
|
+
p.description = p.summary = "extensible open source social network platform"
|
35
|
+
p.url = "http://github.com/tog/tog"
|
36
|
+
p.test_globs = ["test/**/test_*.rb"]
|
37
|
+
p.clean_globs |= ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store'] #An array of file patterns to delete on clean.
|
38
|
+
|
39
|
+
# == Optional
|
40
|
+
p.post_install_message = File.open(File.dirname(__FILE__) + "/../POST_INSTALL").read rescue ""
|
41
|
+
p.changes = p.paragraphs_of("CHANGELOG.md", 0..1).join("\n\n") rescue ""
|
42
|
+
p.extra_deps = EXTRA_DEPENDENCIES
|
43
|
+
#p.spec_extras = {} # A hash of extra values to set in the gemspec.
|
44
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
include FileUtils
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
%w[rake hoe rubigen].each do |req_gem|
|
6
|
+
begin
|
7
|
+
require req_gem
|
8
|
+
rescue LoadError
|
9
|
+
puts "This Rakefile requires the '#{req_gem}' RubyGem."
|
10
|
+
puts "Installation: gem install #{req_gem} -y"
|
11
|
+
exit
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
$:.unshift(File.join(File.dirname(__FILE__), %w[.. lib]))
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class <%= class_name.underscore.camelize %> < ActiveRecord::Migration
|
2
|
+
def self.up<% plugins.each do |plugin| %>
|
3
|
+
migrate_plugin "<%= plugin[:name] %>", <%= plugin[:to_version] %><%- end %>
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.down<% plugins.reverse.each do |plugin| %>
|
7
|
+
migrate_plugin "<%= plugin[:name] %>", <%= plugin[:from_version] %><%- end %>
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class TogMigrationGenerator < Rails::Generator::NamedBase
|
2
|
+
def manifest
|
3
|
+
record do |m|
|
4
|
+
m.migration_template 'migration.rb', 'db/migrate', :assigns => get_local_assigns
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
private
|
10
|
+
def get_local_assigns
|
11
|
+
returning(assigns = {}) do
|
12
|
+
if class_name.underscore =~ /^integrate_(.*)_(?:version)(.*)_(?:from)(.*)/
|
13
|
+
assigns[:plugins] = [{:name => $1, :to_version => $2, :from_version => $3 }]
|
14
|
+
else
|
15
|
+
assigns[:plugins] = []
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class TogPluginGenerator < RubiGen::Base
|
2
|
+
|
3
|
+
default_options :author => nil
|
4
|
+
|
5
|
+
attr_reader :name
|
6
|
+
|
7
|
+
def initialize(runtime_args, runtime_options = {})
|
8
|
+
super
|
9
|
+
usage if args.empty?
|
10
|
+
@name = args.shift
|
11
|
+
extract_options
|
12
|
+
end
|
13
|
+
|
14
|
+
def manifest
|
15
|
+
record do |m|
|
16
|
+
# Ensure appropriate folder(s) exists
|
17
|
+
m.directory 'some_folder'
|
18
|
+
|
19
|
+
# Create stubs
|
20
|
+
# m.template "template.rb", "some_file_after_erb.rb"
|
21
|
+
# m.template_copy_each ["template.rb", "template2.rb"]
|
22
|
+
# m.file "file", "some_file_copied"
|
23
|
+
# m.file_copy_each ["path/to/file", "path/to/file2"]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
protected
|
28
|
+
def banner
|
29
|
+
<<-EOS
|
30
|
+
Creates a ...
|
31
|
+
|
32
|
+
USAGE: #{$0} #{spec.name} name
|
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
|
@@ -0,0 +1,104 @@
|
|
1
|
+
namespace :tog do
|
2
|
+
namespace :plugins do
|
3
|
+
|
4
|
+
desc "Update the tog plugins on this app. This will pull the changes on the HEAD of every tog plugins on your app. Use PLUGIN=plugin_name to update a specific plugin."
|
5
|
+
task :update do
|
6
|
+
plugin_roots(ENV["PLUGIN"]).each do |directory|
|
7
|
+
puts "Pulling changes of #{File.basename(directory)}"
|
8
|
+
chdir directory do
|
9
|
+
output = %x{git pull}
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "Install a new tog plugin. Use PLUGIN parameter to specify the plugin to install e.g. PLUGIN=tog_vault. Use FORCE=true to overwrite the plugin if it's currently installed."
|
15
|
+
task :install do
|
16
|
+
plugin = ENV["PLUGIN"]
|
17
|
+
force = ENV["FORCE"] || false
|
18
|
+
puts "Installing #{plugin} on vendor/plugins/#{plugin}"
|
19
|
+
cmd = "script/plugin install git@github.com:tog/#{plugin}.git"
|
20
|
+
cmd << " --force" if force
|
21
|
+
output = %x{#{cmd}}
|
22
|
+
puts "Generating migration to integrate #{plugin} in the app"
|
23
|
+
|
24
|
+
to_version=Dir.glob("#{RAILS_ROOT}/vendor/plugins/#{plugin}/db/migrate/*.rb").inject(0) do |max, file_path|
|
25
|
+
n = File.basename(file_path).split('_', 2).first.to_i
|
26
|
+
if n > max then n else max end
|
27
|
+
end
|
28
|
+
from_version=0
|
29
|
+
cmd = "script/generate tog_migration Integrate#{plugin.classify}Version#{to_version}From#{from_version}"
|
30
|
+
output = %x{#{cmd}}
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
desc "Copy the public resources stored on the /public folder of every tog plugin on the app's public folder with the plugin name used as prefix. Pass PLUGIN=plugin_name to copy the resources of a single plugin."
|
35
|
+
task :copy_resources do
|
36
|
+
plugin_roots(ENV["PLUGIN"]).each do |directory|
|
37
|
+
plugin_name = File.basename(directory)
|
38
|
+
dest_public_dir = File.join(RAILS_ROOT, "public", plugin_name)
|
39
|
+
orig_public_dir = File.join(directory, "public")
|
40
|
+
if File.exists?(orig_public_dir)
|
41
|
+
puts "Copying the public resources of #{plugin_name} to #{dest_public_dir}"
|
42
|
+
FileUtils.mkdir_p(dest_public_dir)
|
43
|
+
is_svn_dir = proc {|path| path =~ /\.svn/}
|
44
|
+
Dir[orig_public_dir].reject(&is_svn_dir).each do |file|
|
45
|
+
FileUtils.cp_r(Dir["#{orig_public_dir}/*"], dest_public_dir )
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
desc "Runs tests on all available Tog Plugins. Pass PLUGIN=plugin_name to test a single plugin."
|
52
|
+
task :test do
|
53
|
+
plugin_roots(ENV["PLUGIN"]).each do |directory|
|
54
|
+
if File.directory?(File.join(directory, 'test'))
|
55
|
+
chdir directory do
|
56
|
+
if RUBY_PLATFORM =~ /win32/
|
57
|
+
system "rake.cmd test"
|
58
|
+
else
|
59
|
+
system "rake test"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
desc "List the names of tog plugins test methods in a specification like format. Pass PLUGIN=plugin_name to list a single plugin."
|
66
|
+
task :list_specs do
|
67
|
+
require File.expand_path(File.join(RAILS_ROOT, "config","environment"))
|
68
|
+
require 'test/unit'
|
69
|
+
require 'rubygems'
|
70
|
+
require 'active_support'
|
71
|
+
|
72
|
+
# bug in test unit. Set to true to stop from running.
|
73
|
+
Test::Unit.run = true
|
74
|
+
|
75
|
+
plugin_roots(ENV["PLUGIN"]).each do |directory|
|
76
|
+
if File.directory?(File.join(directory, 'test'))
|
77
|
+
chdir directory do
|
78
|
+
test_files = Dir.glob(File.join('test', '**', '*_test.rb'))
|
79
|
+
test_files.each do |file|
|
80
|
+
load file
|
81
|
+
klass = File.basename(file, '.rb').classify.constantize
|
82
|
+
|
83
|
+
puts klass.name.gsub('Test', '')
|
84
|
+
|
85
|
+
test_methods = klass.instance_methods.grep(/^test/).map {|s| s.gsub(/^test: /, '')}.sort
|
86
|
+
test_methods.each {|m| puts " " + m }
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def plugin_roots(plugin=nil)
|
96
|
+
roots = Dir[File.join(RAILS_ROOT, 'vendor', 'plugins', 'tog_*')]
|
97
|
+
if plugin
|
98
|
+
roots = roots.select {|x| /\/(\d+_)?#{plugin}$/ === x }
|
99
|
+
if roots.empty?
|
100
|
+
puts "Sorry, the plugin '#{plugin}' is not installed."
|
101
|
+
end
|
102
|
+
end
|
103
|
+
roots
|
104
|
+
end
|
data/lib/tasks/tog.rb
ADDED
data/lib/tog/version.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
module Tog
|
2
|
+
module VERSION #:nodoc:
|
3
|
+
MAJOR = 0
|
4
|
+
MINOR = 2
|
5
|
+
TINY = 1
|
6
|
+
# http://en.wikipedia.org/wiki/Moons_of_Jupiter
|
7
|
+
CODENAME = 'Adrastea'
|
8
|
+
STRING = [MAJOR, MINOR, TINY].join('.')
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def to_s
|
12
|
+
"#{CODENAME} #{STRING}"
|
13
|
+
end
|
14
|
+
alias :to_str :to_s
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
data/lib/tog.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
2
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
3
|
+
|
4
|
+
require(File.join(File.dirname(__FILE__), 'config', 'boot'))
|
5
|
+
|
6
|
+
require 'rake'
|
7
|
+
require 'rake/testtask'
|
8
|
+
require 'rake/rdoctask'
|
9
|
+
|
10
|
+
require 'tasks/rails'
|
@@ -0,0 +1,9 @@
|
|
1
|
+
RAILS_GEM_VERSION = '2.1.0' unless defined? RAILS_GEM_VERSION
|
2
|
+
require File.join(File.dirname(__FILE__), 'boot')
|
3
|
+
Rails::Initializer.run do |config|
|
4
|
+
config.time_zone = 'UTC'
|
5
|
+
config.action_controller.session = {
|
6
|
+
:session_key => '_tog_app_session',
|
7
|
+
:secret => 'c06f15cbc11cb6b70d45df5f9b527aeb18003879c5527b734a862558e596dfc9c4e96e841a7ff5dd44c129aba275cf50f244301956347815699432ba3a1fd53a'
|
8
|
+
}
|
9
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
begin
|
2
|
+
require File.dirname(__FILE__) + '/test_helper'
|
3
|
+
rescue LoadError
|
4
|
+
require 'test/unit'
|
5
|
+
end
|
6
|
+
require 'fileutils'
|
7
|
+
|
8
|
+
# Must set before requiring generator libs.
|
9
|
+
TMP_ROOT = File.dirname(__FILE__) + "/tmp" unless defined?(TMP_ROOT)
|
10
|
+
PROJECT_NAME = "tog" unless defined?(PROJECT_NAME)
|
11
|
+
app_root = File.join(TMP_ROOT, PROJECT_NAME)
|
12
|
+
if defined?(APP_ROOT)
|
13
|
+
APP_ROOT.replace(app_root)
|
14
|
+
else
|
15
|
+
APP_ROOT = app_root
|
16
|
+
end
|
17
|
+
if defined?(RAILS_ROOT)
|
18
|
+
RAILS_ROOT.replace(app_root)
|
19
|
+
else
|
20
|
+
RAILS_ROOT = app_root
|
21
|
+
end
|
22
|
+
|
23
|
+
begin
|
24
|
+
require 'rubigen'
|
25
|
+
rescue LoadError
|
26
|
+
require 'rubygems'
|
27
|
+
require 'rubigen'
|
28
|
+
end
|
29
|
+
require 'rubigen/helpers/generator_test_helper'
|
30
|
+
|
31
|
+
def copy_to_fake (orig, dest)
|
32
|
+
FileUtils.cp(File.join(File.dirname(__FILE__), orig), File.join(APP_ROOT, dest))
|
33
|
+
end
|
34
|
+
def setup_fake_tog_app
|
35
|
+
bare_setup
|
36
|
+
FileUtils.mkdir_p(File.join(APP_ROOT, "/config"))
|
37
|
+
copy_to_fake("/templates/environment.rb", "/config/environment.rb")
|
38
|
+
copy_to_fake("/templates/routes.rb", "/config/routes.rb")
|
39
|
+
copy_to_fake("/templates/Rakefile", "/Rakefile")
|
40
|
+
@plugins = %w{ tog_core tog_social tog_mail tog_user}
|
41
|
+
end
|
42
|
+
def teardown_fake_tog_app
|
43
|
+
bare_teardown
|
44
|
+
end
|
45
|
+
|
46
|
+
def assert_has_require(body,*requires)
|
47
|
+
requires.each do |req|
|
48
|
+
assert body=~/require '#{req.to_s}'/,"should have require '#{req.to_s}'"
|
49
|
+
yield( req, $1 ) if block_given?
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def assert_has_plugin_routes(body,*routes)
|
54
|
+
routes.each do |route|
|
55
|
+
assert body=~/map.routes_from_plugin '#{route.to_s}'/,"should have routes '#{route.to_s}'"
|
56
|
+
yield( route, $1 ) if block_given?
|
57
|
+
end
|
58
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
2
|
+
require "rake"
|
3
|
+
|
4
|
+
class TestRakeTasks < Test::Unit::TestCase
|
5
|
+
include RubiGen::GeneratorTestHelper
|
6
|
+
|
7
|
+
def setup
|
8
|
+
setup_fake_tog_app
|
9
|
+
run_generator('togify', [APP_ROOT], sources)
|
10
|
+
@rake = Rake::Application.new
|
11
|
+
Rake.application = @rake
|
12
|
+
load File.join(File.dirname(__FILE__), "..", "lib", "tasks", "platform.rake")
|
13
|
+
|
14
|
+
@tog_core_resources_on_public = File.join(APP_ROOT, "public", "tog_core")
|
15
|
+
end
|
16
|
+
|
17
|
+
def teardown
|
18
|
+
teardown_fake_tog_app
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_copy_resources
|
22
|
+
@rake["tog:plugins:copy_resources"].invoke
|
23
|
+
assert File.exists?(@tog_core_resources_on_public)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_copy_resources_not_copy_svn_dirs
|
27
|
+
svn_dir_on_tog_core = File.join(APP_ROOT, "vendor", "plugins", "tog_core", "public", ".svn")
|
28
|
+
FileUtils.mkdir_p(svn_dir_on_tog_core)
|
29
|
+
assert File.exists?(svn_dir_on_tog_core)
|
30
|
+
|
31
|
+
@rake["tog:plugins:copy_resources"].invoke
|
32
|
+
|
33
|
+
assert !File.exists?(File.join(@tog_core_resources_on_public, ".svn"))
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
private
|
38
|
+
def sources
|
39
|
+
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))]
|
40
|
+
end
|
41
|
+
|
42
|
+
def generator_path
|
43
|
+
"app_generators"
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
data/test/test_tog.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
2
|
+
|
3
|
+
|
4
|
+
class TestTogPluginGenerator < Test::Unit::TestCase
|
5
|
+
include RubiGen::GeneratorTestHelper
|
6
|
+
|
7
|
+
def setup
|
8
|
+
bare_setup
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
bare_teardown
|
13
|
+
end
|
14
|
+
|
15
|
+
# Some generator-related assertions:
|
16
|
+
# assert_generated_file(name, &block) # block passed the file contents
|
17
|
+
# assert_directory_exists(name)
|
18
|
+
# assert_generated_class(name, &block)
|
19
|
+
# assert_generated_module(name, &block)
|
20
|
+
# assert_generated_test_for(name, &block)
|
21
|
+
# The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
|
22
|
+
# assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
|
23
|
+
#
|
24
|
+
# Other helper methods are:
|
25
|
+
# app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
|
26
|
+
# bare_setup - place this in setup method to create the APP_ROOT folder for each test
|
27
|
+
# bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
|
28
|
+
|
29
|
+
def test_generator_without_options
|
30
|
+
name = "myapp"
|
31
|
+
run_generator('tog_plugin', [name], sources)
|
32
|
+
#todo implement this
|
33
|
+
#assert_generated_file("some_file")
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
def sources
|
38
|
+
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
|
39
|
+
]
|
40
|
+
end
|
41
|
+
|
42
|
+
def generator_path
|
43
|
+
"generators"
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
2
|
+
|
3
|
+
class TestTogifyGenerator < Test::Unit::TestCase
|
4
|
+
include RubiGen::GeneratorTestHelper
|
5
|
+
|
6
|
+
def setup
|
7
|
+
setup_fake_tog_app
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
teardown_fake_tog_app
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_generator_without_options
|
15
|
+
run_generator('togify', [APP_ROOT], sources)
|
16
|
+
|
17
|
+
assert_generated_file "Rakefile" do |body|
|
18
|
+
assert_has_require body, 'tasks/tog'
|
19
|
+
end
|
20
|
+
|
21
|
+
assert_generated_file "config/environment.rb" do |body|
|
22
|
+
assert_has_require body, 'desert'
|
23
|
+
end
|
24
|
+
|
25
|
+
@plugins.each{|plugin|
|
26
|
+
assert_directory_exists("vendor/plugins/#{plugin}")
|
27
|
+
assert_generated_file "config/routes.rb" do |body|
|
28
|
+
assert_has_plugin_routes body, plugin
|
29
|
+
end
|
30
|
+
assert_remote_origin_of_plugin (plugin, "git://github.com/tog/(.*).git")
|
31
|
+
}
|
32
|
+
generated_migration = Dir.glob("#{APP_ROOT}/db/migrate/*_integrate_tog.rb")[0]
|
33
|
+
assert generated_migration, "should be a IntegrateTog migration in the togified app"
|
34
|
+
File.open(generated_migration, "r") do |file|
|
35
|
+
assert file.read=~/tog_core.*tog_user.*tog_social.*tog_mail.*tog_mail.*tog_social.*tog_user.*tog_core/m,"plugins migrations should be in correct order"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
def test_generator_with_dev_repositories
|
41
|
+
run_generator('togify', [APP_ROOT], sources, {:development => true})
|
42
|
+
@plugins.each{|plugin|
|
43
|
+
assert_remote_origin_of_plugin (plugin, "git@github.com:tog/(.*).git")
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
def sources
|
49
|
+
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))]
|
50
|
+
end
|
51
|
+
|
52
|
+
def generator_path
|
53
|
+
"app_generators"
|
54
|
+
end
|
55
|
+
|
56
|
+
def assert_remote_origin_of_plugin(plugin, match)
|
57
|
+
FileUtils.chdir File.join(APP_ROOT, "vendor", "plugins", "#{plugin}") do
|
58
|
+
remote_origin = %x{git config remote.origin.url}
|
59
|
+
assert remote_origin.match(match)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
data/tog.gemspec
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = %q{tog}
|
3
|
+
s.version = "0.2.1"
|
4
|
+
|
5
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
6
|
+
s.authors = ["Aitor Garc\303\255a", "Alberto Molpeceres", "Roberto Salicio"]
|
7
|
+
s.date = %q{2008-09-27}
|
8
|
+
s.default_executable = %q{togify}
|
9
|
+
s.description = %q{extensible open source social network platform}
|
10
|
+
s.email = ["aitor@linkingpaths.com", "alberto@linkingpaths.com", "roberto@linkingpaths.com"]
|
11
|
+
s.executables = ["togify"]
|
12
|
+
s.extra_rdoc_files = ["Manifest.txt", "README.txt"]
|
13
|
+
s.files = ["CHANGELOG.md", "MIT-LICENSE", "Manifest.txt", "POST_INSTALL", "README.txt", "Rakefile", "app_generators/togify/USAGE", "app_generators/togify/templates/integrate_tog.rb", "app_generators/togify/togify_generator.rb", "bin/togify", "config/hoe.rb", "config/requirements.rb", "generators/tog_migration/USAGE", "generators/tog_migration/templates/migration.rb", "generators/tog_migration/tog_migration_generator.rb", "generators/tog_plugin/USAGE", "generators/tog_plugin/tog_plugin_generator.rb", "lib/tasks/platform.rake", "lib/tasks/tog.rb", "lib/tog.rb", "lib/tog/version.rb", "test/templates/Rakefile", "test/templates/environment.rb", "test/templates/routes.rb", "test/test_generator_helper.rb", "test/test_helper.rb", "test/test_rake_tasks.rb", "test/test_tog.rb", "test/test_tog_plugin_generator.rb", "test/test_togify_generator.rb", "tog.gemspec"]
|
14
|
+
s.has_rdoc = true
|
15
|
+
s.homepage = %q{http://github.com/tog/tog}
|
16
|
+
s.post_install_message = %q{
|
17
|
+
For more information on tog, see https://github.com/tog/tog
|
18
|
+
|
19
|
+
}
|
20
|
+
s.rdoc_options = ["--main", "README.txt"]
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
s.rubyforge_project = %q{tog}
|
23
|
+
s.rubygems_version = %q{1.2.0}
|
24
|
+
s.summary = %q{extensible open source social network platform}
|
25
|
+
s.test_files = ["test/test_generator_helper.rb", "test/test_helper.rb", "test/test_rake_tasks.rb", "test/test_tog.rb", "test/test_tog_plugin_generator.rb", "test/test_togify_generator.rb"]
|
26
|
+
|
27
|
+
if s.respond_to? :specification_version then
|
28
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
29
|
+
s.specification_version = 2
|
30
|
+
|
31
|
+
if current_version >= 3 then
|
32
|
+
s.add_runtime_dependency(%q<mislav-will_paginate>, [">= 2.3.2"])
|
33
|
+
s.add_runtime_dependency(%q<rubigen>, [">= 1.3.2"])
|
34
|
+
s.add_runtime_dependency(%q<tog-desert>, [">= 0.3.4"])
|
35
|
+
s.add_development_dependency(%q<hoe>, [">= 1.7.0"])
|
36
|
+
else
|
37
|
+
s.add_dependency(%q<mislav-will_paginate>, [">= 2.3.2"])
|
38
|
+
s.add_dependency(%q<rubigen>, [">= 1.3.2"])
|
39
|
+
s.add_dependency(%q<tog-desert>, [">= 0.3.4"])
|
40
|
+
s.add_dependency(%q<hoe>, [">= 1.7.0"])
|
41
|
+
end
|
42
|
+
else
|
43
|
+
s.add_dependency(%q<mislav-will_paginate>, [">= 2.3.2"])
|
44
|
+
s.add_dependency(%q<rubigen>, [">= 1.3.2"])
|
45
|
+
s.add_dependency(%q<tog-desert>, [">= 0.3.4"])
|
46
|
+
s.add_dependency(%q<hoe>, [">= 1.7.0"])
|
47
|
+
end
|
48
|
+
end
|
metadata
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tog-tog
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- "Aitor Garc\xC3\xADa"
|
8
|
+
- Alberto Molpeceres
|
9
|
+
- Roberto Salicio
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
|
14
|
+
date: 2008-09-27 00:00:00 -07:00
|
15
|
+
default_executable: togify
|
16
|
+
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
18
|
+
name: mislav-will_paginate
|
19
|
+
version_requirement:
|
20
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 2.3.2
|
25
|
+
version:
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rubigen
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.3.2
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: tog-desert
|
37
|
+
version_requirement:
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.3.4
|
43
|
+
version:
|
44
|
+
- !ruby/object:Gem::Dependency
|
45
|
+
name: hoe
|
46
|
+
version_requirement:
|
47
|
+
version_requirements: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: 1.7.0
|
52
|
+
version:
|
53
|
+
description: extensible open source social network platform
|
54
|
+
email:
|
55
|
+
- aitor@linkingpaths.com
|
56
|
+
- alberto@linkingpaths.com
|
57
|
+
- roberto@linkingpaths.com
|
58
|
+
executables:
|
59
|
+
- togify
|
60
|
+
extensions: []
|
61
|
+
|
62
|
+
extra_rdoc_files:
|
63
|
+
- Manifest.txt
|
64
|
+
- README.txt
|
65
|
+
files:
|
66
|
+
- CHANGELOG.md
|
67
|
+
- MIT-LICENSE
|
68
|
+
- Manifest.txt
|
69
|
+
- POST_INSTALL
|
70
|
+
- README.txt
|
71
|
+
- Rakefile
|
72
|
+
- app_generators/togify/USAGE
|
73
|
+
- app_generators/togify/templates/integrate_tog.rb
|
74
|
+
- app_generators/togify/togify_generator.rb
|
75
|
+
- bin/togify
|
76
|
+
- config/hoe.rb
|
77
|
+
- config/requirements.rb
|
78
|
+
- generators/tog_migration/USAGE
|
79
|
+
- generators/tog_migration/templates/migration.rb
|
80
|
+
- generators/tog_migration/tog_migration_generator.rb
|
81
|
+
- generators/tog_plugin/USAGE
|
82
|
+
- generators/tog_plugin/tog_plugin_generator.rb
|
83
|
+
- lib/tasks/platform.rake
|
84
|
+
- lib/tasks/tog.rb
|
85
|
+
- lib/tog.rb
|
86
|
+
- lib/tog/version.rb
|
87
|
+
- test/templates/Rakefile
|
88
|
+
- test/templates/environment.rb
|
89
|
+
- test/templates/routes.rb
|
90
|
+
- test/test_generator_helper.rb
|
91
|
+
- test/test_helper.rb
|
92
|
+
- test/test_rake_tasks.rb
|
93
|
+
- test/test_tog.rb
|
94
|
+
- test/test_tog_plugin_generator.rb
|
95
|
+
- test/test_togify_generator.rb
|
96
|
+
- tog.gemspec
|
97
|
+
has_rdoc: true
|
98
|
+
homepage: http://github.com/tog/tog
|
99
|
+
post_install_message: |+
|
100
|
+
|
101
|
+
For more information on tog, see https://github.com/tog/tog
|
102
|
+
|
103
|
+
rdoc_options:
|
104
|
+
- --main
|
105
|
+
- README.txt
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: "0"
|
113
|
+
version:
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: "0"
|
119
|
+
version:
|
120
|
+
requirements: []
|
121
|
+
|
122
|
+
rubyforge_project: tog
|
123
|
+
rubygems_version: 1.2.0
|
124
|
+
signing_key:
|
125
|
+
specification_version: 2
|
126
|
+
summary: extensible open source social network platform
|
127
|
+
test_files:
|
128
|
+
- test/test_generator_helper.rb
|
129
|
+
- test/test_helper.rb
|
130
|
+
- test/test_rake_tasks.rb
|
131
|
+
- test/test_tog.rb
|
132
|
+
- test/test_tog_plugin_generator.rb
|
133
|
+
- test/test_togify_generator.rb
|