{"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 der Standardeinstellung eine PostgreSQL Datenbanken. Der einfachste Weg, eine lauff\u00e4hige PostgrSQL Datenbank einzurichten, ist mit Hilfe von Docker. Erstellen Sie hierzu einen Datei docker-compose.yml: Starten Sie die Datenbank in einem eigenen Fenster mit dem nachfolgenden Kommando: Datenbanktabellen erstellen Festlegen der Datenbank-Verbindungsparameter in der Datei config\/dev.exs. Wir [&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}]}}