Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

FMK2017 - Webdevelopment mit Rails by Stefan Husch qutic.com

251 views

Published on

Der Vortrag zeigt anhand eines Beispiels, wie man mit Open Source eine Webapplikation erstellt.

Viele FileMaker-Entwickler befassen sich heute schon mit HTML, CSS und Javascript für den Webviewer sowie mit CSS für die Layout-Templates. Da liegt der Sprung zu einer richtigen Webapplikation nahe.

Ziel ist es, eine Alternative zur FileMaker Entwicklung aufzuzeigen. Beleuchtet werden die Vor- und auch die Nachteile von Open Source Software im Vergleich zu FileMaker. Eine Diskussion am Ende des Vortrags ist erwünscht.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

FMK2017 - Webdevelopment mit Rails by Stefan Husch qutic.com

  1. 1. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 www.filemaker-konferenz.com Mit Open Source Software eine Webapplikation erstellen Stefan Husch s.husch@qutic.com qutic development Consulting, Development, Hosting Open Source - eine FileMaker Alternative?
  2. 2. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Stefan Husch • Inhaber qutic development • Consulting, Development, Hosting • Security- & Privacy-Focus • FileMaker-Entwickler 1993-2006 • Webentwickler 2005-heute • Vorträge zum Thema Server-Orchestration, Virtualisierung, Hochverfügbarkeit, Security
  3. 3. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Wahl des richtigen Tools
  4. 4. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Wahl des richtigen Tools
  5. 5. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch FileMaker: Vor- & Nachteile + Graphische Oberfläche + Geringe Lernkurve + Schnelles Prototyping + Das FileMaker Magazin Forum - Graphische Oberfläche - Maus-Arm - Lizenzkosten - Keine Entwickler-Leitlinien - Schwer zu erweitern (Plugins) - Schlecht zu skalieren - Schlecht zu dokumentieren (SourceCode) - Keine automatisierten Tests
  6. 6. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Wahl des richtigen Tools
  7. 7. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Rails: Vor- & Nachteile + Open Source + Textbasierte Entwicklung + Versionskontrolle + Schnelle App-Entwicklung + Entwickler-Leitlinien + Flexibel + Beliebig zu skalieren + Gut zu dokumentieren + Automatisierte Tests + Endlose Möglichkeiten - Steilere Lernkurve - Endlose Möglichkeiten - Dokumentation in Englisch
  8. 8. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Entwicklungskosten Web == FMP * *große Projekte: Web < FMP
  9. 9. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Warum ein Webframework? • Datenbankzugriff (Object-relational mapping, ORM) • Templatesysteme (View) • Scaffolding (Gerüstbau für Controller, Model, View) • Routing (URL-Struktur) • Role Based User Authentification (Wer darf was) • Lokalisierung (Mehrsprachigkeit) • Sicherheitsfunktionen (SQL-Injection, XSS, etc.)
  10. 10. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Warum Rails? • Ausgereiftes Webframework (seit 2005, Vorbild für Andere) • Objektorientiert • Don’t repeat yourself • Konvention vor Konfiguration • Einfach zu lernen • Sehr große Community • Vielfalt an vorhandenen Bibliotheken (gems)
  11. 11. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Endlose Möglichkeiten • Welche Datenbank wähle ich? PostgreSQL, MySQL, SQLite, MonoDB, Oracle, etc. • Welche Template-Engine wähle ich? Haml, ERB, etc. • Welches CSS-Framework wähle ich? Sass, SCSS, Less, Stylus, etc. • Welche Background-Queue wähle ich? Sidekiq, DelayedJob, Resque, RabbitMQ, etc.
  12. 12. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch FileMaker Starter Solutions
  13. 13. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch
  14. 14. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Keep it simple • Ziel: Intranet-Applikation für maximal 250 Benutzer • Datenbank: SQLite • Template-Engine: - • CSS-Framework: - • Background-Queue: -
  15. 15. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Entwicklungs-Umgebung • Ruby (Programmiersprache) • Rails (Webframework) • bundler (Installations-Automatisierung für Ruby Bibliotheken) • rvm (Ruby Version Manager) • git (Versionskontrollsystem) • TextMate (Textverarbeitung, macOS) • SQLite
  16. 16. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch „Textbasierte Entwicklung“ $ $ $ $ $ $ # Das Terminal ist Dein Freund :) $ $ $ $ $
  17. 17. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Ruby und Rails installieren $ curl -sSL https://get.rvm.io | bash -s head $ rvm install ruby-2.4.2 $ gem install bundler $ echo "rvm use ruby-2.4.2@contacts --create" > .rvmrc $ source .rvmrc $ gem install rails
  18. 18. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Rails Projekt erstellen $ rails new contacts -d sqlite3
  19. 19. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Rails Projekt ansehen $ cd contacts $ m . # öffnet das Projekt in TextMate
  20. 20. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Rails Überblick • Model-View-Controller Architektur (MVC) • active_record (ORM) • Klare Projekt-Struktur • Konfiguration • Initializers • Routes • Datenbank-Schema • Datenbank-Migration • Gemfile • Log
  21. 21. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch
  22. 22. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Was ist ActiveAdmin? • Rails-Erweiterung (Engine) • Keine Controller und Views nötig (aber möglich) • Domain-specific language (DSL) • Einfache Entwicklung
  23. 23. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Und los geht es $ cat <<EOF >> Gemfile gem 'activeadmin' gem 'devise' EOF $ $ bundle $ rails generate active_admin:install $ rails db:migrate $ rails db:seed $ $ git init . $ git add . $ git commit -m "initial commit" $ $ rails server
  24. 24. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Browser-Ansicht
  25. 25. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch
  26. 26. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Datenbank-Model FileMaker
  27. 27. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Datenbank-Model Rails persons id group_id title first_name last_name company job_title notes addresses id person_id type street street_addition city zip groups id name contact_types id name contacts id person_id contact_type_id contact
  28. 28. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Modell erstellen $ rails generate model group name:string $ $ rails generate model contact_type name:string $ $ rails generate model contact person:belongs_to contact_type:belongs_to contact:string
  29. 29. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Modell erstellen $ rails generate model person group:belongs_to title:string first_name:string last_name:string company:string job_title:string notes:text
  30. 30. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Modell erstellen $ rails generate model address person:belongs_to mode:string street:string street_addition:string city:string zip:string
  31. 31. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch ActiveAdmin-Ressourcen erstellen $ rails generate active_admin:resource Person $ rails generate active_admin:resource Address $ rails generate active_admin:resource Group $ rails generate active_admin:resource ContactType $ rails generate active_admin:resource Contact
  32. 32. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Select-Menu Daten erstellen $ cat <<EOF >> db/seeds.rb Group.create!(name: 'Personal') Group.create!(name: 'Professional') Group.create!(name: 'Family') Group.create!(name: 'Friend') ContactType.create!(name: 'Office Phone') ContactType.create!(name: 'Mobile Phone') ContactType.create!(name: 'Personal Phone') ContactType.create!(name: 'Fax') ContactType.create!(name: 'Office Email') ContactType.create!(name: 'Personal Email') ContactType.create!(name: 'FaceTime') ContactType.create!(name: 'Twitter') EOF
  33. 33. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Datenbank-Migration $ rails db:drop $ rails db:create $ rails db:migrate $ rails db:seed $ $ git add . $ git commit -m "integrate ActiveAdmin"
  34. 34. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Browser-Ansicht
  35. 35. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Todo • Comments deaktivieren • permit_params in allen ActiveAdmin-Resources setzen • routes.rb: root to: redirect('/admin') • Addresses und Contacts aus Menü entfernen (menu false) • Model-Relations erweitern • ActiveAdmin-Ressourcen anpassen
  36. 36. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch ActiveAdmin-Ressourcen anpassen # app/admin/address.rb ActiveAdmin.register Address do menu false permit_params :person_id, :type, :street, :street_addition, :city, :zip end # app/admin/contact_type.rb ActiveAdmin.register ContactType do permit_params :name end # app/admin/contact.rb ActiveAdmin.register Contact do menu false permit_params :person_id, :contact_type_id, :contact end # app/admin/group.rb ActiveAdmin.register Group do permit_params :name end
  37. 37. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch ActiveAdmin-Ressourcen anpassen # app/admin/person.rb ActiveAdmin.register Person do permit_params :group_id, :title, :first_name, :last_name, :company, :job_title, :notes, contacts_attributes: [:id, :contact_type_id, :contact], addresses_attributes: [:id, :person_id, :mode, :street, :street_addition, :city, :zip] show do attributes_table_for person do Person.column_names.each do |c| row c.to_sym end end table_for person.contacts do column "Type", :contact_type column "Contact", :contact end table_for person.addresses do column "Mode", :mode column "Street", :street column "Addition", :street_addition column "City", :city column "Zip", :zip end end
  38. 38. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch ActiveAdmin-Ressourcen anpassen form :html => {:multipart => true} do |f| f.inputs 'Person' do f.input :group f.input :title f.input :first_name f.input :last_name f.input :company f.input :job_title f.input :notes f.input :image, as: :file end f.inputs do f.has_many :contacts, allow_destroy: true do |c| c.input :contact_type c.input :contact end end
  39. 39. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch ActiveAdmin-Ressourcen anpassen f.inputs do f.has_many :addresses, allow_destroy: true do |a| a.input :mode, :as => :select, :collection => [ ['Work','Work'], ['Personal','Personal'] ] a.input :street a.input :street_addition a.input :city a.input :zip end end f.actions end end
  40. 40. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Model erweitern # app/model/person.rb class Person < ApplicationRecord belongs_to :group has_many :contacts has_many :addresses accepts_nested_attributes_for :contacts, reject_if: :all_blank, allow_destroy: true accepts_nested_attributes_for :addresses, reject_if: :all_blank, allow_destroy: true def name [title, first_name, last_name].join(" ").strip end end
  41. 41. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Browser-Ansicht
  42. 42. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Bild-Upload $ cat <<EOF >> Gemfile gem 'paperclip' EOF $ $ bundle $ rails generate paperclip person image $ $ # fix migration file $ sed -i '' -e "s#ActiveRecord::Migration#ActiveRecord::Migration[5.1]#g" db/migrate/*_add_attachment_image_to_people.rb $ $ rails db:migrate
  43. 43. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Image-Referenz hinzufügen # app/admin/person.rb ActiveAdmin.register Person do permit_params :group_id, :title, :first_name, :last_name, :company, :job_title, :notes, :image, contacts_attributes: [:id, :contact_type_id, :contact], addresses_attributes: [:id, :person_id, :mode, :street, :street_addition, :city, :zip] # app/model/person.rb class Person < ApplicationRecord has_attached_file :image, styles: { medium: "300x300>", thumbnail: "100x100>" } validates_attachment_content_type :image, :content_type => [ "image/jpg", "image/jpeg", "image/png", "image/gif" ]
  44. 44. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Browser-Ansicht
  45. 45. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch ?
  46. 46. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Links zum Vortrag • https://speakerdeck.com/qutic • https://de.wikipedia.org/wiki/Webframework • http://rubyonrails.org • https://www.ruby-lang.org/en/ • https://rvm.io • https://stackoverflow.com/questions/15691977/why-start-a-shell-command- with-a-backslash • http://bundler.io • https://gorails.com/setup/windows/10 • http://macromates.com/download • https://activeadmin.info • https://activeadmin.info/documentation.html
  47. 47. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open Source - eine FileMaker Alternative? | Stefan Husch Weiter lernen • https://github.com/activeadmin/activeadmin/wiki • https://gorails.com/episodes/using-activeadmin-to-build-an-admin-ui • https://spin.atomicobject.com/2016/07/23/file-upload-active-admin-paperclip/ • https://pragprog.com/book/ruby4/programming-ruby-1-9-2-0 • https://pragprog.com/book/rails51/agile-web-development-with-rails-5-1 • http://railscasts.com
  48. 48. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Vortrag und Sprecher Vielen Dank unseren Sponsoren

×