Fork me on GitHub

Ειδικές Εργασίες Mix

Δημιουργία ειδικών εργασιών Mix για τα Elixir projects σας.

Πίνακας περιεχομένων

Εισαγωγή

Είναι συνηθισμένο να θέλετε να επεκτείνετε τη λειτουργικότητα των εφαρμογών σας στην Elixir προσθέτοντας ειδικές εργασίες Mix. Πριν μάθουμε πως να το κάνουμε αυτό, ας δούμε ένα που υπάρχει ήδη:

$ mix phoenix.new my_phoenix_app

* creating my_phoenix_app/config/config.exs
* creating my_phoenix_app/config/dev.exs
* creating my_phoenix_app/config/prod.exs
* creating my_phoenix_app/config/prod.secret.exs
* creating my_phoenix_app/config/test.exs
* creating my_phoenix_app/lib/my_phoenix_app.ex
* creating my_phoenix_app/lib/my_phoenix_app/endpoint.ex
* creating my_phoenix_app/test/views/error_view_test.exs
...

Όπως μπορούμε να δούμε από την εντολή κονσόλας από πάνω, ο σκελετός εφαρμογών Phoenix έχει ειδική εργασία Mix για να δημιουργεί ένα νέο project. Θα μπορούσαμε να δημιουργήσουμε κάτι παρόμοιο για τα projects μας; Μπορούμε, και η Elixir το κάνει πολύ έυκολο για εμάς.

Εγκατάσταση

Ας εγκαταστήσουμε μια πολύ βασική εφαρμογή Mix.

$ mix new hello

* creating README.md
* creating .gitignore
* creating mix.exs
* creating config
* creating config/config.exs
* creating lib
* creating lib/hello.ex
* creating test
* creating test/test_helper.exs
* creating test/hello_test.exs

Your Mix project was created successfully.
You can use "mix" to compile it, test it, and more:

cd hello
mix test

Run "mix help" for more commands.

Τώρα, στο αρχείο lib/hello.ex που μας έφτιαξε το το Mix, ας δημιουργήσουμε μια απλή συνάρτηση που εμφανίζει το “Γειά σου, Κόσμε!”

defmodule Hello do

  @doc """
  Εμφανίζει το "Γειά σου, Κόσμε!" κάθε φορά.
  """
  def say do
    IO.puts "Γειά σου, Κόσμε!"
  end
end

Ειδική Εργασία Mix

Ας δημιουργήσουμε την ειδική εργασία Mix. Δημιουργήστε ένα νέο φάκελο hello/lib/mix/tasks/hello.ex. Μέσα σε αυτό το αρχείο, ας εισάγουμε αυτές τις 7 γραμμές Elixir.

defmodule Mix.Tasks.Hello do
  use Mix.Task

  @shortdoc "Απλά τρέχει την εντολή Hello.say/0 ."
  def run(_) do
    Hello.say # καλεί την συνάρτηση Hello.say() από πριν
  end
end

Παρατηρείστε πως ξεκινούμε την δήλωση defmodule με το Mix.Tasks και το όνομα που θέλουμε να καλέσουμε από τη γραμμή εντολών. Στη δεύτερη γραμμή παρουσιάζουμε την use Mix.Task η οποία φέρνει τη συμπεριφορά της Mix.Task στο namespace. Μετά ορίζουμε μια συνάρτηση run η οποία αγνοεί όλα τα ορίσματα για τώρα. Μέσα στη συνάρτηση, καλούμε την ενότητα Hello και τη συνάρτηση say.

Εργασίες Mix εν Δράσει

Ας ελέγξουυμε την εργασία mix. Όσο είμαστε στο φάκελο θα πρέπει να δουλεύει. Από τη γραμμή εντολών, τρέξτε την εντολή mix hello, και θα πρέπει να δούμε τα ακόλουθα:

$ mix hello
Γειά σου, Κόσμε!

Το Mix είναι αρκετά φιλικό. Γνωρίζει ότι όλοι μπορούν να κάνουνε λάθος στην ορθογραφία μερικές φορές, έτσι χρησιμοποιεί μια τεχνική που λέγεται ασαφής αντιπαραβολή αλφαριθμητικών για να κάνει συστάσεις:

$ mix hell
** (Mix) The task "hell" could not be found. Did you mean "hello"?

Μήπως παρατηρήσατε ήδη ότι εισάγαμε μια νέα ιδιότητα ενότητας, την @shortdoc; Αυτή είναι βολική όταν στέλνουμε την εφαρμογή στην παραγωγή, ώστε για παράδειγμα ο χρήστης να μπορεί να τρέξει την εντολή mix help στο τερματικό.

$ mix help

mix app.start         # Ξεκινάει όλες τις εγγεγραμμένες εφαρμογές
...
mix hello             # Απλά καλεί την συνάρτηση Hello.say/0.
...

Share This Page