openproject-plugins 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +71 -0
- data/lib/generators/open_project/plugin/USAGE +19 -0
- data/lib/generators/open_project/plugin/plugin_generator.rb +55 -0
- data/lib/generators/open_project/plugin/templates/%full_name%.gemspec.tt +19 -0
- data/lib/generators/open_project/plugin/templates/CHANGELOG.md +3 -0
- data/lib/generators/open_project/plugin/templates/README.md.tt +7 -0
- data/lib/generators/open_project/plugin/templates/lib/%full_name%.rb.tt +1 -0
- data/lib/generators/open_project/plugin/templates/lib/open_project/%plugin_name%.rb.tt +5 -0
- data/lib/generators/open_project/plugin/templates/lib/open_project/%plugin_name%/engine.rb.tt +13 -0
- data/lib/generators/open_project/plugin/templates/lib/open_project/%plugin_name%/version.rb.tt +5 -0
- data/lib/open_project/plugins.rb +16 -0
- data/lib/open_project/plugins/acts_as_op_engine.rb +129 -0
- data/lib/open_project/plugins/engine.rb +38 -0
- data/lib/open_project/plugins/load_dependency.rb +24 -0
- data/lib/open_project/plugins/patch_registry.rb +33 -0
- data/lib/open_project/plugins/version.rb +16 -0
- data/lib/openproject-plugins.rb +12 -0
- metadata +120 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 82f6dd65effd37dc2d14bea60a33b61ccdc78655
|
4
|
+
data.tar.gz: 879a92f8812e7c07d835802b56307453cf04d6d9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8b1583c4f8c496217155e355a87ba08c423655331f2391929c730b254cce44e5985387c9f4b4b566865cbc83836de8f4ae233aef06cd00fe397493743ed8844b
|
7
|
+
data.tar.gz: 768a7f518c111bd89ae8f5ddd081c7486721a534839dc75d3d343630e9cca1048a5cd3ce7604f58635b6d2068cde8cdb389cc740b584c329fd79fe9ba63aaaa3
|
data/README.md
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
<!---- copyright
|
2
|
+
OpenProject is a project management system.
|
3
|
+
|
4
|
+
Copyright (C) 2012-2013 the OpenProject Team
|
5
|
+
|
6
|
+
This program is free software; you can redistribute it and/or
|
7
|
+
modify it under the terms of the GNU General Public License version 3.
|
8
|
+
|
9
|
+
See doc/COPYRIGHT.md for more details.
|
10
|
+
|
11
|
+
++-->
|
12
|
+
|
13
|
+
# OpenProject Plugins Plugin
|
14
|
+
|
15
|
+
This plugin aims to make writing plugins easier. It provides a generator for creating a basic plugin structure and a module that simplifies setting up the plugin Rails engine. Thus, it is also a dependency for many plugins.
|
16
|
+
|
17
|
+
## Usage
|
18
|
+
|
19
|
+
Make sure to include the plugins plugin before all other plugins in your Gemfile, otherwise the module used by the plugin Rails engines (`OpenProject::Plugins::ActsAsOpEngine`) is not available when a plugin is being loaded.
|
20
|
+
|
21
|
+
### Generator
|
22
|
+
|
23
|
+
bundle exec rails generate open_project:plugin <plugin name> <target folder>
|
24
|
+
|
25
|
+
The generator will create a new subfolder within `<target folder>`, named `openproject-<plugin name>`.
|
26
|
+
|
27
|
+
Example:
|
28
|
+
|
29
|
+
bundle exec rails generate open_project:plugin xls_export .
|
30
|
+
|
31
|
+
### ActsAsOpEngine
|
32
|
+
|
33
|
+
The generated engine uses `ActsAsOpEngine` by default, so just have a look at this file.
|
34
|
+
For more information on how to use `ActsAsOpEngine`, just see the comments in its [source code](lib/open_project/plugins/acts_as_op_engine.rb).
|
35
|
+
It offers methods to load patches and register assets besides others.
|
36
|
+
|
37
|
+
#### Example
|
38
|
+
```ruby
|
39
|
+
module OpenProject::RepositoryAuthentication
|
40
|
+
class Engine < ::Rails::Engine
|
41
|
+
engine_name :openproject_repository_authentication
|
42
|
+
|
43
|
+
include OpenProject::Plugins::ActsAsOpEngine
|
44
|
+
|
45
|
+
register 'openproject-repository_authentication',
|
46
|
+
:author_url => 'http://finn.de',
|
47
|
+
:requires_openproject => '>= 3.0.0pre6'
|
48
|
+
|
49
|
+
patches [:SysController]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
## Get in Contact
|
55
|
+
|
56
|
+
OpenProject is supported by its community members, both companies as well as individuals. There are different possibilities of getting help:
|
57
|
+
* OpenProject [support page](https://www.openproject.org/projects/openproject/wiki/Support)
|
58
|
+
* E-Mail Support - info@openproject.org
|
59
|
+
|
60
|
+
## Start Collaborating
|
61
|
+
|
62
|
+
Join the OpenProject community and start collaborating. We envision building a platform to share ideas, contributions, and discussions around OpenProject and project collaboration. Each commitment is noteworthy as it helps to improve the software and the project.
|
63
|
+
More details will be added on the OpenProject Community [contribution page](https://www.openproject.org/projects/openproject/wiki/Contribution).
|
64
|
+
|
65
|
+
In case you find a bug or need a feature, please report at https://www.openproject.org/projects/plugin-plugins/issues
|
66
|
+
|
67
|
+
## License
|
68
|
+
|
69
|
+
(c) 2013 - Finn GmbH
|
70
|
+
|
71
|
+
This plugin is licensed under the GNU GPL v3. See doc/COPYRIGHT.md for details.
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Description:
|
2
|
+
Creates a new plugin with the given name in the specified directory
|
3
|
+
|
4
|
+
Usage:
|
5
|
+
rails generate open_project:plugin NAME DIRECTORY
|
6
|
+
|
7
|
+
Example:
|
8
|
+
rails generate open_project:plugin stuff ~/
|
9
|
+
|
10
|
+
This will create:
|
11
|
+
~/openproject-stuff
|
12
|
+
~/openproject-stuff/CHANGELOG.md
|
13
|
+
~/openproject-stuff/openproject-stuff.gemspec
|
14
|
+
~/openproject-stuff/lib
|
15
|
+
~/openproject-stuff/lib/openproject-stuff.rb
|
16
|
+
~/openproject-stuff/lib/open_project
|
17
|
+
~/openproject-stuff/lib/open_project/stuff.rb
|
18
|
+
~/openproject-stuff/lib/open_project/stuff
|
19
|
+
~/openproject-stuff/lib/open_project/stuff/engine.rb
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#-- copyright
|
2
|
+
# OpenProject is a project management system.
|
3
|
+
#
|
4
|
+
# Copyright (C) 2012-2013 the OpenProject Team
|
5
|
+
#
|
6
|
+
# This program is free software; you can redistribute it and/or
|
7
|
+
# modify it under the terms of the GNU General Public License version 3.
|
8
|
+
#
|
9
|
+
# See doc/COPYRIGHT.md for more details.
|
10
|
+
#++
|
11
|
+
|
12
|
+
class OpenProject::PluginGenerator < Rails::Generators::Base
|
13
|
+
source_root File.expand_path('../templates', __FILE__)
|
14
|
+
|
15
|
+
argument :plugin_name, :type => :string, :default => "openproject-new-plugin"
|
16
|
+
argument :root_folder, :type => :string, :default => "vendor/gems"
|
17
|
+
|
18
|
+
# every public method is run when the generator is invoked
|
19
|
+
def generate_plugin
|
20
|
+
plugin_dir
|
21
|
+
lib_dir
|
22
|
+
end
|
23
|
+
|
24
|
+
def full_name
|
25
|
+
@full_name ||= begin
|
26
|
+
"openproject-#{plugin_name}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
def raise_on_params
|
32
|
+
puts plugin_name
|
33
|
+
puts root_folder
|
34
|
+
end
|
35
|
+
|
36
|
+
def plugin_path
|
37
|
+
"#{root_folder}/openproject-#{plugin_name}"
|
38
|
+
end
|
39
|
+
|
40
|
+
def plugin_dir
|
41
|
+
@plugin_dir ||= begin
|
42
|
+
directory('', plugin_path, :recursive => false)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def lib_path
|
47
|
+
"#{plugin_path}/lib"
|
48
|
+
end
|
49
|
+
|
50
|
+
def lib_dir
|
51
|
+
@lib_dir ||= begin
|
52
|
+
directory('lib', lib_path)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
require 'open_project/<%= plugin_name %>/version'
|
5
|
+
# Describe your gem and declare its dependencies:
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "<%= full_name %>"
|
8
|
+
s.version = OpenProject::<%= plugin_name.camelcase %>::VERSION
|
9
|
+
s.authors = "Finn GmbH"
|
10
|
+
s.email = "info@finn.de"
|
11
|
+
s.homepage = "http://www.finn.de"
|
12
|
+
s.summary = FIXME
|
13
|
+
s.description = FIXME
|
14
|
+
s.license = FIXME # e.g. "MIT" or "GPLv3"
|
15
|
+
|
16
|
+
s.files = Dir["{app,config,db,lib}/**/*"] + %w(CHANGELOG.md README.md)
|
17
|
+
|
18
|
+
s.add_dependency "rails", "~> 3.2.14"
|
19
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'open_project/<%= plugin_name %>'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module OpenProject::<%= plugin_name.camelcase %>
|
2
|
+
class Engine < ::Rails::Engine
|
3
|
+
engine_name :openproject_<%= plugin_name %>
|
4
|
+
|
5
|
+
include OpenProject::Plugins::ActsAsOpEngine
|
6
|
+
|
7
|
+
register 'OpenProject <%= plugin_name.gsub('_', ' ').titleize %>',
|
8
|
+
'<%= full_name %>',
|
9
|
+
:author_url => 'http://finn.de',
|
10
|
+
:requires_openproject => '>= 3.0.0pre13'
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#-- copyright
|
2
|
+
# OpenProject is a project management system.
|
3
|
+
#
|
4
|
+
# Copyright (C) 2012-2013 the OpenProject Team
|
5
|
+
#
|
6
|
+
# This program is free software; you can redistribute it and/or
|
7
|
+
# modify it under the terms of the GNU General Public License version 3.
|
8
|
+
#
|
9
|
+
# See doc/COPYRIGHT.md for more details.
|
10
|
+
#++
|
11
|
+
|
12
|
+
module OpenProject
|
13
|
+
module Plugins
|
14
|
+
require 'open_project/plugins/engine'
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
#-- copyright
|
2
|
+
# OpenProject is a project management system.
|
3
|
+
#
|
4
|
+
# Copyright (C) 2012-2013 the OpenProject Team
|
5
|
+
#
|
6
|
+
# This program is free software; you can redistribute it and/or
|
7
|
+
# modify it under the terms of the GNU General Public License version 3.
|
8
|
+
#
|
9
|
+
# See doc/COPYRIGHT.md for more details.
|
10
|
+
#++
|
11
|
+
|
12
|
+
module OpenProject::Plugins
|
13
|
+
module ActsAsOpEngine
|
14
|
+
|
15
|
+
def self.included(base)
|
16
|
+
base.send(:define_method, :name) do
|
17
|
+
ActiveSupport::Inflector.demodulize(base).downcase
|
18
|
+
end
|
19
|
+
|
20
|
+
# Don't use the PatchRegistry for now, as the core classes doesn't notify of class loading
|
21
|
+
# Use the old config.to_prepare method, but we can hopefully someday switch to on-demand
|
22
|
+
# patching once the PatchRegistry works.
|
23
|
+
|
24
|
+
# base.send(:define_method, :patch) do |target, patch|
|
25
|
+
# OpenProject::Plugins::PatchRegistry.register(target, patch)
|
26
|
+
# end
|
27
|
+
|
28
|
+
# Disable LoadDependency for the same reason
|
29
|
+
# base.send(:define_method, :load_dependent) do |target, *dependencies|
|
30
|
+
# OpenProject::Plugins::LoadDependency.register(target, *dependencies)
|
31
|
+
# end
|
32
|
+
|
33
|
+
# Patch classes
|
34
|
+
#
|
35
|
+
# Looks for patches via autoloading in
|
36
|
+
# <plugin root>/lib/openproject/<plugin name>/patches/<patched_class>_patch.rb
|
37
|
+
# Make sure the patch module has the name the Rails autoloading expects.
|
38
|
+
#
|
39
|
+
# Example:
|
40
|
+
# patches [:IssuesController]
|
41
|
+
# This looks for OpenProject::XlsExport::Patches::IssuesControllerPatch
|
42
|
+
# in openproject/xls_export/patches/issues_controller_patch.rb
|
43
|
+
base.send(:define_method, :patches) do |patched_classes|
|
44
|
+
plugin_name = engine_name
|
45
|
+
base.config.to_prepare do
|
46
|
+
patched_classes.each do |klass_name|
|
47
|
+
plugin_module = plugin_name.sub(/^openproject_/, '').camelcase
|
48
|
+
patch = "OpenProject::#{plugin_module}::Patches::#{klass_name.to_s}Patch".constantize
|
49
|
+
klass = klass_name.to_s.constantize
|
50
|
+
klass.send(:include, patch) unless klass.included_modules.include?(patch)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Define assets provided by the plugin
|
56
|
+
base.send(:define_method, :assets) do |assets|
|
57
|
+
base.initializer '#{engine_name}.precompile_assets' do |app|
|
58
|
+
app.config.assets.precompile += assets.to_a
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# Register a plugin with OpenProject
|
63
|
+
#
|
64
|
+
# Uses Gem specification for plugin name, author etc.
|
65
|
+
#
|
66
|
+
# gem_name: The gem name, used for querying the gem for metadata like author
|
67
|
+
# options: An options Hash, at least :requires_openproject is recommended to
|
68
|
+
# define the minimal version of OpenProject the plugin is compatible with
|
69
|
+
# Another common option is :author_url.
|
70
|
+
base.send(:define_method, :register) do |gem_name, options|
|
71
|
+
base.initializer "#{engine_name}.register_plugin" do
|
72
|
+
spec = Bundler.environment.specs[gem_name][0]
|
73
|
+
|
74
|
+
Redmine::Plugin.register engine_name.to_sym do
|
75
|
+
name spec.summary
|
76
|
+
author spec.authors.kind_of?(Array) ? spec.authors[0] : spec.authors
|
77
|
+
description spec.description
|
78
|
+
version spec.version
|
79
|
+
url spec.homepage
|
80
|
+
|
81
|
+
options.each do |name, value|
|
82
|
+
send(name, value)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
# Workaround to ensure settings are available after unloading in development mode
|
88
|
+
plugin_name = engine_name
|
89
|
+
if options.include? :settings
|
90
|
+
base.class_eval do
|
91
|
+
config.to_prepare do
|
92
|
+
Setting.create_setting("plugin_#{plugin_name}",
|
93
|
+
{ 'serialized' => true }.merge(options[:settings]))
|
94
|
+
Setting.create_setting_accessors("plugin_#{plugin_name}")
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
base.class_eval do
|
101
|
+
config.autoload_paths += Dir["#{config.root}/lib/"]
|
102
|
+
|
103
|
+
config.before_configuration do |app|
|
104
|
+
# This is required for the routes to be loaded first
|
105
|
+
# as the routes should be prepended so they take precedence over the core.
|
106
|
+
app.config.paths['config/routes'].unshift File.join(config.root, "config", "routes.rb")
|
107
|
+
end
|
108
|
+
|
109
|
+
initializer "#{engine_name}.remove_duplicate_routes", :after => "add_routing_paths" do |app|
|
110
|
+
# removes duplicate entry from app.routes_reloader
|
111
|
+
# As we prepend the plugin's routes to the load_path up front and rails
|
112
|
+
# adds all engines' config/routes.rb later, we have double loaded the routes
|
113
|
+
# This is not harmful as such but leads to duplicate routes which decreases performance
|
114
|
+
app.routes_reloader.paths.uniq!
|
115
|
+
end
|
116
|
+
|
117
|
+
initializer "#{engine_name}.register_test_paths" do |app|
|
118
|
+
app.config.plugins_to_test_paths << self.root
|
119
|
+
end
|
120
|
+
|
121
|
+
# adds our factories to factory girl's load path
|
122
|
+
initializer "#{engine_name}.register_factories", :after => "factory_girl.set_factory_paths" do |app|
|
123
|
+
FactoryGirl.definition_file_paths << File.expand_path(self.root.to_s + '/spec/factories') if defined?(FactoryGirl)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#-- copyright
|
2
|
+
# OpenProject is a project management system.
|
3
|
+
#
|
4
|
+
# Copyright (C) 2012-2013 the OpenProject Team
|
5
|
+
#
|
6
|
+
# This program is free software; you can redistribute it and/or
|
7
|
+
# modify it under the terms of the GNU General Public License version 3.
|
8
|
+
#
|
9
|
+
# See doc/COPYRIGHT.md for more details.
|
10
|
+
#++
|
11
|
+
|
12
|
+
require 'rails/engine'
|
13
|
+
|
14
|
+
module OpenProject::Plugins
|
15
|
+
class Engine < ::Rails::Engine
|
16
|
+
|
17
|
+
engine_name :openproject_plugins
|
18
|
+
|
19
|
+
require 'open_project/plugins/patch_registry'
|
20
|
+
require 'open_project/plugins/load_dependency'
|
21
|
+
require 'open_project/plugins/acts_as_op_engine'
|
22
|
+
|
23
|
+
config.after_initialize do
|
24
|
+
spec = Bundler.environment.specs['openproject-plugins'][0]
|
25
|
+
|
26
|
+
Redmine::Plugin.register :openproject_plugins do
|
27
|
+
name 'OpenProject Plugins'
|
28
|
+
author ((spec.authors.kind_of? Array) ? spec.authors[0] : spec.authors)
|
29
|
+
author_url spec.homepage
|
30
|
+
url 'https://www.openproject.org/projects/plugins'
|
31
|
+
description spec.description
|
32
|
+
version spec.version
|
33
|
+
|
34
|
+
requires_openproject ">= 3.0.0pre8"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#-- copyright
|
2
|
+
# OpenProject is a project management system.
|
3
|
+
#
|
4
|
+
# Copyright (C) 2012-2013 the OpenProject Team
|
5
|
+
#
|
6
|
+
# This program is free software; you can redistribute it and/or
|
7
|
+
# modify it under the terms of the GNU General Public License version 3.
|
8
|
+
#
|
9
|
+
# See doc/COPYRIGHT.md for more details.
|
10
|
+
#++
|
11
|
+
|
12
|
+
module OpenProject::Plugins
|
13
|
+
module LoadDependency
|
14
|
+
def self.register(target, *dependencies)
|
15
|
+
|
16
|
+
ActiveSupport.on_load(target) do
|
17
|
+
dependencies.each do |dependency|
|
18
|
+
require_dependency dependency
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#-- copyright
|
2
|
+
# OpenProject is a project management system.
|
3
|
+
#
|
4
|
+
# Copyright (C) 2012-2013 the OpenProject Team
|
5
|
+
#
|
6
|
+
# This program is free software; you can redistribute it and/or
|
7
|
+
# modify it under the terms of the GNU General Public License version 3.
|
8
|
+
#
|
9
|
+
# See doc/COPYRIGHT.md for more details.
|
10
|
+
#++
|
11
|
+
|
12
|
+
module OpenProject::Plugins
|
13
|
+
module PatchRegistry
|
14
|
+
def self.register(target, patch)
|
15
|
+
#patches[target] << patch
|
16
|
+
|
17
|
+
ActiveSupport.on_load(target) do
|
18
|
+
require_dependency patch
|
19
|
+
constant = patch.camelcase.constantize
|
20
|
+
|
21
|
+
target.to_s.camelcase.constantize.send(:include, constant)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
protected
|
26
|
+
|
27
|
+
def self.patches
|
28
|
+
@patches ||= Hash.new do |h, k|
|
29
|
+
h[k] = []
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#-- copyright
|
2
|
+
# OpenProject is a project management system.
|
3
|
+
#
|
4
|
+
# Copyright (C) 2012-2013 the OpenProject Team
|
5
|
+
#
|
6
|
+
# This program is free software; you can redistribute it and/or
|
7
|
+
# modify it under the terms of the GNU General Public License version 3.
|
8
|
+
#
|
9
|
+
# See doc/COPYRIGHT.md for more details.
|
10
|
+
#++
|
11
|
+
|
12
|
+
module OpenProject
|
13
|
+
module Plugins
|
14
|
+
VERSION = "1.0.2"
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#-- copyright
|
2
|
+
# OpenProject is a project management system.
|
3
|
+
#
|
4
|
+
# Copyright (C) 2012-2013 the OpenProject Team
|
5
|
+
#
|
6
|
+
# This program is free software; you can redistribute it and/or
|
7
|
+
# modify it under the terms of the GNU General Public License version 3.
|
8
|
+
#
|
9
|
+
# See doc/COPYRIGHT.md for more details.
|
10
|
+
#++
|
11
|
+
|
12
|
+
require 'open_project/plugins'
|
metadata
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: openproject-plugins
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Finn GmbH
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-09-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.2.9
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.2.9
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec-rails
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: cucumber-rails
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: database_cleaner
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: |2
|
70
|
+
This plugin aims to make writing plugins easier. It provides a generator for creating a
|
71
|
+
basic plugin structure and a module that simplifies setting up the plugin Rails engine.
|
72
|
+
Thus, it is also a dependency for many openproject plugins.
|
73
|
+
email: info@finn.de
|
74
|
+
executables: []
|
75
|
+
extensions: []
|
76
|
+
extra_rdoc_files: []
|
77
|
+
files:
|
78
|
+
- lib/open_project/plugins.rb
|
79
|
+
- lib/open_project/plugins/load_dependency.rb
|
80
|
+
- lib/open_project/plugins/version.rb
|
81
|
+
- lib/open_project/plugins/engine.rb
|
82
|
+
- lib/open_project/plugins/patch_registry.rb
|
83
|
+
- lib/open_project/plugins/acts_as_op_engine.rb
|
84
|
+
- lib/openproject-plugins.rb
|
85
|
+
- lib/generators/open_project/plugin/plugin_generator.rb
|
86
|
+
- lib/generators/open_project/plugin/USAGE
|
87
|
+
- lib/generators/open_project/plugin/templates/lib/open_project/%plugin_name%/engine.rb.tt
|
88
|
+
- lib/generators/open_project/plugin/templates/lib/open_project/%plugin_name%/version.rb.tt
|
89
|
+
- lib/generators/open_project/plugin/templates/lib/open_project/%plugin_name%.rb.tt
|
90
|
+
- lib/generators/open_project/plugin/templates/lib/%full_name%.rb.tt
|
91
|
+
- lib/generators/open_project/plugin/templates/%full_name%.gemspec.tt
|
92
|
+
- lib/generators/open_project/plugin/templates/README.md.tt
|
93
|
+
- lib/generators/open_project/plugin/templates/CHANGELOG.md
|
94
|
+
- README.md
|
95
|
+
homepage: http://www.finn.de
|
96
|
+
licenses:
|
97
|
+
- GPLv3
|
98
|
+
metadata: {}
|
99
|
+
post_install_message:
|
100
|
+
rdoc_options: []
|
101
|
+
require_paths:
|
102
|
+
- lib
|
103
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - '>='
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0'
|
108
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - '>='
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
requirements: []
|
114
|
+
rubyforge_project:
|
115
|
+
rubygems_version: 2.1.0
|
116
|
+
signing_key:
|
117
|
+
specification_version: 4
|
118
|
+
summary: OpenProject Plugins Plugin
|
119
|
+
test_files: []
|
120
|
+
has_rdoc:
|