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

Αυτή η μετάφραση είναι πλήρως ενημερωμένη.

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

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

Εισαγωγή

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

$ mix phx.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. Θα μπορούσαμε να δημιουργήσουμε κάτι παρόμοιο για τo project μας; Μπορούμε, και η 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.
...

Σημείωση: Ο κώδικάς μας πρέπει να έχει συνταχθεί πριν εμφανιστούν οι νέες εργασίες στην έξοδο της εντολής mix help. Μπορούμε να το κάνουμε αυτό είτε τρέχοντας την εντολή mix compile απευθείας, ή τρέχοντας την νέα μας εργασία με την εντολή mix hello, το οποίο θα δώσει το έναυσμα για τη σύνταξη του κώδικα.

Caught a mistake or want to contribute to the lesson? Edit this page on GitHub!