diff --git a/lib/generators/open_project/plugin/plugin_generator.rb b/lib/generators/open_project/plugin/plugin_generator.rb index f821188e96c..7886c65c8f6 100644 --- a/lib/generators/open_project/plugin/plugin_generator.rb +++ b/lib/generators/open_project/plugin/plugin_generator.rb @@ -36,6 +36,7 @@ class OpenProject::PluginGenerator < Rails::Generators::Base def generate_plugin plugin_dir lib_dir + bin_dir end def full_name @@ -70,4 +71,14 @@ class OpenProject::PluginGenerator < Rails::Generators::Base directory('lib', lib_path) end end + + def bin_path + "#{plugin_path}/bin" + end + + def bin_dir + @bin_dir ||= begin + directory('bin', bin_path) + end + end end diff --git a/lib/generators/open_project/plugin/templates/Gemfile b/lib/generators/open_project/plugin/templates/Gemfile new file mode 100644 index 00000000000..fa75df15632 --- /dev/null +++ b/lib/generators/open_project/plugin/templates/Gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' + +gemspec diff --git a/lib/generators/open_project/plugin/templates/bin/rails.tt b/lib/generators/open_project/plugin/templates/bin/rails.tt new file mode 100755 index 00000000000..8fcd60c45ac --- /dev/null +++ b/lib/generators/open_project/plugin/templates/bin/rails.tt @@ -0,0 +1,26 @@ +#!/usr/bin/env ruby +# This command will automatically be run when you run "rails" with Rails gems +# installed from the root of your application. + +ENGINE_ROOT = File.expand_path('../..', __FILE__) +ENGINE_PATH = File.expand_path('../../lib/open_project/<%= plugin_name %>/engine', __FILE__) + +# Set up gems listed in the Gemfile. +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) +require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) + +## +# This is not ideal but better than nothing. +if ENV['OPENPROJECT_ROOT'] + # /Users/mkahl/dev/openproject/release/lib + path = Pathname(ENV["OPENPROJECT_ROOT"]).join("lib") + $LOAD_PATH.unshift(path.to_s) +else + puts + puts "Error: please define OPENPROJECT_ROOT pointing to your OpenProject core's root directory" + puts + Kernel.exit(1) +end + +require 'rails/all' +require 'rails/engine/commands'