SlideShare une entreprise Scribd logo
1  sur  19
Desarrollo de plugins
para #redmine
Cambios significativos entre ramas 1.x y 2.x
@ imonteroperez
Redmine
Desarrollo de un plugin en tres pasos
1. Crear el plugin
$ ruby script/rails generate redmine_plugin <plugin_name>
         create plugins/<plugin_name>/app
         create plugins/<plugin_name>/app/controllers
         create plugins/<plugin_name>/app/helpers
         create plugins/<plugin_name>/app/models
         create plugins/<plugin_name>/app/views
         create plugins/<plugin_name>/db/migrate
         create plugins/<plugin_name>/lib/tasks
         create plugins/<plugin_name>/assets/images
         create plugins/<plugin_name>/assets/javascripts
         create plugins/<plugin_name>/assets/stylesheets
         create plugins/<plugin_name>/config/locales
         create plugins/<plugin_name>/test
         create plugins/<plugin_name>/README.rdoc
         create plugins/<plugin_name>/init.rb
         create plugins/<plugin_name>/config/routes.rb
         create plugins/<plugin_name>/config/locales/en.yml
         create plugins/<plugin_name>/test/test_helper.rb
$ ruby script/rails generate redmine_plugin <plugin_name>
         create plugins/<plugin_name>/app
         create plugins/<plugin_name>/app/controllers
         create plugins/<plugin_name>/app/helpers
         create plugins/<plugin_name>/app/models
         create plugins/<plugin_name>/app/views
         create plugins/<plugin_name>/db/migrate
         create plugins/<plugin_name>/lib/tasks
         create plugins/<plugin_name>/assets/images
         create plugins/<plugin_name>/assets/javascripts
         create plugins/<plugin_name>/assets/stylesheets
         create plugins/<plugin_name>/config/locales
         create plugins/<plugin_name>/test
         create plugins/<plugin_name>/README.rdoc
         create plugins/<plugin_name>/init.rb
         create plugins/<plugin_name>/config/routes.rb
         create plugins/<plugin_name>/config/locales/en.yml
         create plugins/<plugin_name>/test/test_helper.rb
Redmine::Plugin.register :<plugin_name> do
                   name <NAME>
                   author <AUTHOR>
                   description <DESCRIPTION>
                   version '0.0.1'
                  end



Dir["#{File.dirname(__FILE__)}/config/initializers/**/*.rb"].sort.each do |initializer|
            require initializer
end


APP_CONFIG = YAML.load_file("#{File.dirname(__FILE__)}/../config.yml")[Rails.env]


require <module>


                 http://<HOST>:<PORT>/admin/plugins
2. Crear el modelo
$ ruby script/rails generate redmine_plugin_model <plugin_name>
  <model_name> [field[:type][:index] field[:type][:index] ...]

   create plugins/<plugin_name>/app/models/<model_name>.rb
   create plugins/<plugin_name>/test/unit/<model_name>_test.rb
   create plugins/<plugin_name>/db/migrate/001_create_<model_name>s.rb
3. Crear el controlador
$ ruby script/rails generate redmine_plugin_controller <plugin_name>
 <controller_name> [<actions>]
 create plugins/<plugin_name>/app/controllers/<controller_name>_controller.rb
 create plugins/<plugin_name>/app/helpers/<controller_name>_helper.rb
 create plugins/<plugin_name>/test/functional/<controller_name>_controller_test.rb

 { create plugins/<plugin_name>/app/views/<controller_name>/<action>.html.erb }
Recursos
http://www.redmine.org/projects/redmine/wiki/Plugin_Tutorial
http://www.redmine.org/plugins
http://www.redmine.org/projects/redmine/wiki/Plugin_List
Cambios 2.x
http://projects.andriylesyuk.com/projects/base/wiki/Porting-
to-Redmine-2
Gracias por vuestra atenció n!

Contenu connexe

Tendances

Zend - Installation And Sample Project Creation
Zend - Installation And Sample Project Creation Zend - Installation And Sample Project Creation
Zend - Installation And Sample Project Creation
Compare Infobase Limited
 
Plugging into plugins
Plugging into pluginsPlugging into plugins
Plugging into plugins
Josh Harrison
 
浜松Rails3道場 其の四 View編
浜松Rails3道場 其の四 View編浜松Rails3道場 其の四 View編
浜松Rails3道場 其の四 View編
Masakuni Kato
 
Simple restfull app_s
Simple restfull app_sSimple restfull app_s
Simple restfull app_s
netwix
 

Tendances (20)

Zend - Installation And Sample Project Creation
Zend - Installation And Sample Project Creation Zend - Installation And Sample Project Creation
Zend - Installation And Sample Project Creation
 
Como programar un blog REST
Como programar un blog RESTComo programar un blog REST
Como programar un blog REST
 
Plugging into plugins
Plugging into pluginsPlugging into plugins
Plugging into plugins
 
Javascript laravel's friend
Javascript laravel's friendJavascript laravel's friend
Javascript laravel's friend
 
RSpec. Part 1
RSpec. Part 1RSpec. Part 1
RSpec. Part 1
 
RSpec. Part 2
RSpec. Part 2RSpec. Part 2
RSpec. Part 2
 
RoR 101: Session 5
RoR 101: Session 5RoR 101: Session 5
RoR 101: Session 5
 
How to driver your webservices with ansible
How to driver your webservices with ansibleHow to driver your webservices with ansible
How to driver your webservices with ansible
 
Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2
 
RoR 101: Session 3
RoR 101: Session 3RoR 101: Session 3
RoR 101: Session 3
 
Magento - a Zend Framework Application
Magento - a Zend Framework ApplicationMagento - a Zend Framework Application
Magento - a Zend Framework Application
 
Rails Plugins
Rails PluginsRails Plugins
Rails Plugins
 
Introduce phaser
Introduce phaserIntroduce phaser
Introduce phaser
 
浜松Rails3道場 其の四 View編
浜松Rails3道場 其の四 View編浜松Rails3道場 其の四 View編
浜松Rails3道場 其の四 View編
 
Simple restfull app_s
Simple restfull app_sSimple restfull app_s
Simple restfull app_s
 
Introduction to AngularJS For WordPress Developers
Introduction to AngularJS For WordPress DevelopersIntroduction to AngularJS For WordPress Developers
Introduction to AngularJS For WordPress Developers
 
Code igniter parameter passing techniques
Code igniter parameter passing techniquesCode igniter parameter passing techniques
Code igniter parameter passing techniques
 
ActiveResource & REST
ActiveResource & RESTActiveResource & REST
ActiveResource & REST
 
Don't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and JoomlaDon't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and Joomla
 
Application Diagnosis with Zend Server Tracing
Application Diagnosis with Zend Server TracingApplication Diagnosis with Zend Server Tracing
Application Diagnosis with Zend Server Tracing
 

En vedette (7)

Implementación del Software Público
Implementación del Software Público Implementación del Software Público
Implementación del Software Público
 
Gobierno Abierto seminario Open Data Chile 2012
Gobierno Abierto seminario Open Data Chile 2012Gobierno Abierto seminario Open Data Chile 2012
Gobierno Abierto seminario Open Data Chile 2012
 
Universidad de Cadiz - Introduccion a Gobierno Abierto y #opendata
Universidad de Cadiz - Introduccion a Gobierno Abierto y #opendataUniversidad de Cadiz - Introduccion a Gobierno Abierto y #opendata
Universidad de Cadiz - Introduccion a Gobierno Abierto y #opendata
 
Universidad de Cádiz - Casos Practicos #opendata
Universidad de Cádiz - Casos Practicos #opendataUniversidad de Cádiz - Casos Practicos #opendata
Universidad de Cádiz - Casos Practicos #opendata
 
Consumo de endpoint Sparql desde Drupal
Consumo de endpoint Sparql desde DrupalConsumo de endpoint Sparql desde Drupal
Consumo de endpoint Sparql desde Drupal
 
Presentación OpenDataSev
Presentación OpenDataSevPresentación OpenDataSev
Presentación OpenDataSev
 
Gobierno Abierto y Apertura de Datos - Open Data Chile 2012
Gobierno Abierto y Apertura de Datos - Open Data Chile 2012Gobierno Abierto y Apertura de Datos - Open Data Chile 2012
Gobierno Abierto y Apertura de Datos - Open Data Chile 2012
 

Similaire à Redmine Betabeers SVQ

Desymfony 2011 - Habemus Bundles
Desymfony 2011 - Habemus BundlesDesymfony 2011 - Habemus Bundles
Desymfony 2011 - Habemus Bundles
Albert Jessurum
 
Head First Zend Framework - Part 1 Project & Application
Head First Zend Framework - Part 1 Project & ApplicationHead First Zend Framework - Part 1 Project & Application
Head First Zend Framework - Part 1 Project & Application
Jace Ju
 

Similaire à Redmine Betabeers SVQ (20)

Rails Engine | Modular application
Rails Engine | Modular applicationRails Engine | Modular application
Rails Engine | Modular application
 
Desymfony 2011 - Habemus Bundles
Desymfony 2011 - Habemus BundlesDesymfony 2011 - Habemus Bundles
Desymfony 2011 - Habemus Bundles
 
The Rails Way
The Rails WayThe Rails Way
The Rails Way
 
Zend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_ToolZend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_Tool
 
Generators
GeneratorsGenerators
Generators
 
DockerCon EU 2018 - Dockerfile Best Practices
DockerCon EU 2018 - Dockerfile Best PracticesDockerCon EU 2018 - Dockerfile Best Practices
DockerCon EU 2018 - Dockerfile Best Practices
 
DCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best PracticesDCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best Practices
 
DevFest 2022 - GitHub Actions를 활용한 Flutter 배포 자동화하기
DevFest 2022 - GitHub Actions를 활용한 Flutter 배포 자동화하기DevFest 2022 - GitHub Actions를 활용한 Flutter 배포 자동화하기
DevFest 2022 - GitHub Actions를 활용한 Flutter 배포 자동화하기
 
React django
React djangoReact django
React django
 
Browserify
BrowserifyBrowserify
Browserify
 
Maven
MavenMaven
Maven
 
Maven
MavenMaven
Maven
 
Rapid Prototyping FTW!!!
Rapid Prototyping FTW!!!Rapid Prototyping FTW!!!
Rapid Prototyping FTW!!!
 
2018 the conf put git to work - increase the quality of your rails project...
2018 the conf   put git to work -  increase the quality of your rails project...2018 the conf   put git to work -  increase the quality of your rails project...
2018 the conf put git to work - increase the quality of your rails project...
 
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
 
ElggCamp Santiago> For Developers!
ElggCamp Santiago> For Developers!ElggCamp Santiago> For Developers!
ElggCamp Santiago> For Developers!
 
ElggCamp Santiago - Dev Edition
ElggCamp Santiago - Dev EditionElggCamp Santiago - Dev Edition
ElggCamp Santiago - Dev Edition
 
DCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best PracticesDCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best Practices
 
Creating a modern web application using Symfony API Platform, ReactJS and Red...
Creating a modern web application using Symfony API Platform, ReactJS and Red...Creating a modern web application using Symfony API Platform, ReactJS and Red...
Creating a modern web application using Symfony API Platform, ReactJS and Red...
 
Head First Zend Framework - Part 1 Project & Application
Head First Zend Framework - Part 1 Project & ApplicationHead First Zend Framework - Part 1 Project & Application
Head First Zend Framework - Part 1 Project & Application
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Dernier (20)

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 

Redmine Betabeers SVQ

  • 1. Desarrollo de plugins para #redmine Cambios significativos entre ramas 1.x y 2.x @ imonteroperez
  • 3.
  • 4.
  • 5.
  • 6. Desarrollo de un plugin en tres pasos
  • 7. 1. Crear el plugin
  • 8. $ ruby script/rails generate redmine_plugin <plugin_name> create plugins/<plugin_name>/app create plugins/<plugin_name>/app/controllers create plugins/<plugin_name>/app/helpers create plugins/<plugin_name>/app/models create plugins/<plugin_name>/app/views create plugins/<plugin_name>/db/migrate create plugins/<plugin_name>/lib/tasks create plugins/<plugin_name>/assets/images create plugins/<plugin_name>/assets/javascripts create plugins/<plugin_name>/assets/stylesheets create plugins/<plugin_name>/config/locales create plugins/<plugin_name>/test create plugins/<plugin_name>/README.rdoc create plugins/<plugin_name>/init.rb create plugins/<plugin_name>/config/routes.rb create plugins/<plugin_name>/config/locales/en.yml create plugins/<plugin_name>/test/test_helper.rb
  • 9. $ ruby script/rails generate redmine_plugin <plugin_name> create plugins/<plugin_name>/app create plugins/<plugin_name>/app/controllers create plugins/<plugin_name>/app/helpers create plugins/<plugin_name>/app/models create plugins/<plugin_name>/app/views create plugins/<plugin_name>/db/migrate create plugins/<plugin_name>/lib/tasks create plugins/<plugin_name>/assets/images create plugins/<plugin_name>/assets/javascripts create plugins/<plugin_name>/assets/stylesheets create plugins/<plugin_name>/config/locales create plugins/<plugin_name>/test create plugins/<plugin_name>/README.rdoc create plugins/<plugin_name>/init.rb create plugins/<plugin_name>/config/routes.rb create plugins/<plugin_name>/config/locales/en.yml create plugins/<plugin_name>/test/test_helper.rb
  • 10. Redmine::Plugin.register :<plugin_name> do name <NAME> author <AUTHOR> description <DESCRIPTION> version '0.0.1' end Dir["#{File.dirname(__FILE__)}/config/initializers/**/*.rb"].sort.each do |initializer| require initializer end APP_CONFIG = YAML.load_file("#{File.dirname(__FILE__)}/../config.yml")[Rails.env] require <module> http://<HOST>:<PORT>/admin/plugins
  • 11. 2. Crear el modelo
  • 12. $ ruby script/rails generate redmine_plugin_model <plugin_name> <model_name> [field[:type][:index] field[:type][:index] ...] create plugins/<plugin_name>/app/models/<model_name>.rb create plugins/<plugin_name>/test/unit/<model_name>_test.rb create plugins/<plugin_name>/db/migrate/001_create_<model_name>s.rb
  • 13. 3. Crear el controlador
  • 14. $ ruby script/rails generate redmine_plugin_controller <plugin_name> <controller_name> [<actions>] create plugins/<plugin_name>/app/controllers/<controller_name>_controller.rb create plugins/<plugin_name>/app/helpers/<controller_name>_helper.rb create plugins/<plugin_name>/test/functional/<controller_name>_controller_test.rb { create plugins/<plugin_name>/app/views/<controller_name>/<action>.html.erb }
  • 19. Gracias por vuestra atenció n!