{"id":6437,"date":"2020-04-23T07:54:20","date_gmt":"2020-04-23T05:54:20","guid":{"rendered":"https:\/\/blog.via-internet.de\/?p=6437"},"modified":"2020-04-23T07:54:20","modified_gmt":"2020-04-23T05:54:20","slug":"elixir-get-started-with-phoenix","status":"publish","type":"post","link":"https:\/\/via-internet.de\/blog\/2020\/04\/23\/elixir-get-started-with-phoenix\/","title":{"rendered":"Elixir| Einstieg in Elixir und Phoenix"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Installation<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Erlang \/ Elixir<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Unter Windows<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Installationspakete unter <a rel=\"noreferrer noopener\" href=\"https:\/\/www.erlang.org\/downloads\" data-type=\"URL\" data-id=\"https:\/\/www.erlang.org\/downloads\" target=\"_blank\">Erlang \/ Downloads<\/a> (<a rel=\"noreferrer noopener\" href=\"https:\/\/erlang.org\/download\/otp_win64_24.0.exe\" data-type=\"URL\" data-id=\"https:\/\/erlang.org\/download\/otp_win64_24.0.exe\" target=\"_blank\">Version 24.0<\/a>) und <a rel=\"noreferrer noopener\" href=\"https:\/\/elixir-lang.org\/install.html#windows\" data-type=\"URL\" data-id=\"https:\/\/elixir-lang.org\/install.html#windows\" target=\"_blank\">Elixir \/ Downloads<\/a> (<a href=\"https:\/\/github.com\/elixir-lang\/elixir-windows-setup\/releases\/download\/v2.1\/elixir-websetup.exe\" data-type=\"URL\" data-id=\"https:\/\/github.com\/elixir-lang\/elixir-windows-setup\/releases\/download\/v2.1\/elixir-websetup.exe\" target=\"_blank\" rel=\"noreferrer noopener\">Web Installer<\/a>)  <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Erstellen einer ersten Anwendung<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Anwendung mit dem Namen &#8216;app&#8217; erstellen.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Als Vorlage wird &#8216;live&#8217; werwendet. Diese vewendet Phoenix.LiveView und erleichter die Erstellung von Web Anwendungen.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">mix phx.new --live app<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Frontend erstellen<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cd app\ncd assets <\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npm install \nnode node_modules\/webpack\/bin\/webpack.js --mode development<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Datenbank-Instanz einrichten und starten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Elixir und Phoenix verwendet in der Standardeinstellung eine PostgreSQL Datenbanken.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der einfachste Weg, eine lauff\u00e4hige PostgrSQL Datenbank einzurichten, ist mit Hilfe von Docker.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Erstellen Sie hierzu einen Datei <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">docker-compose.yml:<\/code><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"11-13\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">version: '3.5'\n\nnetworks:\n  postgres:\n    name: ${POSTGRES_CONTAINER:-workshop_elixir_postgres}\n    driver: bridge\n\nvolumes:\n    postgres:\n      name: postgres\n\nservices:\n  postgres:\n    container_name: ${POSTGRES_CONTAINER:-workshop_elixir_postgres}\n    image: postgres\n    environment:\n      POSTGRES_USER: ${POSTGRES_USER:-postgres}\n      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}\n      PGDATA: \/data\/postgres\n\n    volumes:\n       - postgres:\/data\/postgres\n\n    ports:\n      - \"5432:5432\"\n\n    networks:\n      - postgres\n\n    restart: unless-stopped<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Starten Sie die Datenbank in einem eigenen Fenster mit dem nachfolgenden Kommando:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker compose up\n[+] Running 14\/14\n - db Pulled\n   - b4d181a07f80 Already exists\n   - 46ca1d02c28c Pull complete\n   - a756866b5565 Pull complete\n   - 36c49e539e90 Pull complete\n   - 664019fbcaff Pull complete \n   - 727aeee9c480 Pull complete\n   - 796589e6b223 Pull complete\n   - 6664992e747d Pull complete\n   - 0f933aa7ccec Pull complete\n   - 99b5e5d88b32 Pull complete\n   - a901b82e6004 Pull complete\n   - 625fd35fd0f3 Pull complete\n   - 9e37bf358a5d Pull complete\n[+] Running 1\/1\n - Container elixis_postgres  Started\nAttaching to elixis_postgres\nelixis_postgres  | The files belonging to this database system will be owned by user \"postgres\".\nelixis_postgres  | This user must also own the server process.\n...\n...\n...\nelixis_postgres  | 2021-07-12 15:01:08.042 UTC [1] LOG:  database system is ready to accept connections<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Datenbanktabellen erstellen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Festlegen der Datenbank-Verbindungsparameter in der Datei <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">config\/dev.exs<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wir verwenden dabie die gleichen Werte, die wir in der Datei <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">docker-compose.yml<\/code> verwendet haben:<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter is-style-stripes\"><table><tbody><tr><td>POSTGRES_USER<\/td><td class=\"has-text-align-center\" data-align=\"center\">username<\/td><\/tr><tr><td>POSTGRES_PASSWORD<\/td><td class=\"has-text-align-center\" data-align=\"center\">password<\/td><\/tr><tr><td>POSTGRES_DB<\/td><td class=\"has-text-align-center\" data-align=\"center\">database<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"2-4\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">config :app, App.Repo,\n  username: \"root\",\n  password: \"root\",\n  database: \"playground\",\n  hostname: \"localhost\",\n  show_sensitive_data_on_connection_error: true,\n  pool_size: 10<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Erstellen der Datenbank-Tabellen<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">mix ecto.create<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Webserver starten<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">mix phx.server<\/pre>\n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><img decoding=\"async\" src=\"http:\/\/blog.via-internet.de\/wp-content\/uploads\/2021\/07\/image-6-700x288.png\" alt=\"\" class=\"wp-image-8046\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Links<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Elixir und das Web<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Phoenix (<a rel=\"noreferrer noopener\" href=\"http:\/\/phoenixframework.org\" data-type=\"URL\" data-id=\"http:\/\/phoenixframework.org\" target=\"_blank\">Web<\/a>&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/phoenixframework\/phoenix\" data-type=\"URL\" data-id=\"https:\/\/github.com\/phoenixframework\/phoenix\" target=\"_blank\">Github<\/a>)<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Elixir und Datenbanken<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"http:\/\/absinthe-graphql.org\/\">GraphQL &amp; Elixir<\/a><\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/hexdocs.pm\/ecto\">Ecto<\/a>&nbsp;&#8211; domain specific language for writing queries and interacting with databases&nbsp;<a href=\"https:\/\/github.com\/elixir-ecto\/ecto\">Github<\/a><\/li><\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Tips zum Erlernen von Elixir<\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">Screencasts<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.learnelixir.tv\/\" target=\"_blank\" rel=\"noreferrer noopener\">LearnElixir.tv<\/a>: Great to start with this. Nice exercises.<\/li><li><a href=\"https:\/\/www.learnphoenix.tv\/\" target=\"_blank\" rel=\"noreferrer noopener\">LearnPhoenix.tv<\/a>: Best to look into after learning some Elixir.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u00dcbungen \/Exercises<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" href=\"http:\/\/exercism.io\/languages\/elixir\/exercises\" target=\"_blank\">exercise.io<\/a><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">B\u00fccher<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/pragprog.com\/book\/elixir13\/programming-elixir-1-3\" target=\"_blank\" rel=\"noreferrer noopener\">Programming Elixir 1.3<\/a><\/li><li><a href=\"https:\/\/pragprog.com\/book\/phoenix\/programming-phoenix\" target=\"_blank\" rel=\"noreferrer noopener\">Programming Phoenix<\/a><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Installation Erlang \/ Elixir Unter Windows Installationspakete unter Erlang \/ Downloads (Version 24.0) und Elixir \/ Downloads (Web Installer) Erstellen einer ersten Anwendung Anwendung mit dem Namen &#8216;app&#8217; erstellen. Als Vorlage wird &#8216;live&#8217; werwendet. Diese vewendet Phoenix.LiveView und erleichter die Erstellung von Web Anwendungen. Frontend erstellen Datenbank-Instanz einrichten und starten Elixir und Phoenix verwendet in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":8046,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[94,24],"tags":[],"class_list":["post-6437","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elixir","category-erlang"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/6437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/comments?post=6437"}],"version-history":[{"count":0,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/6437\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media?parent=6437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/categories?post=6437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/tags?post=6437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}