I am trying to create application with Elixir, Ecto without Pheonix.
mix.exs
defmodule Wtf.MixProject do
use Mix.Project
def project do
[
app: :wtf,
version: "0.1.0",
elixir: "~> 1.13",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger, :postgrex, :ecto, :ecto_sql],
mod: {Wtf.Application, []}
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
{:postgrex, "~> 0.16.3"},
{:ecto, "~> 3.8.4"},
{:ecto_sql, "~> 3.8.3"},
{:json, "~> 1.4"},
{:jason, "~> 1.3.0"},
{:ratatouille, "~> 0.5.0"},
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
]
end
end
repo.ex
defmodule Wtf.Repo do
use Ecto.Repo,
otp_app: :wtf,
adapter: Ecto.Adapters.Postgres
end
application.ex
defmodule Wtf.Application do
# See https://hexdocs.pm/elixir/Application.html
# for more information on OTP Applications
@moduledoc false
use Application
@impl true
def start(_type, _args) do
children = [
# Starts a worker by calling: Wtf.Worker.start_link(arg)
# {Wtf.Worker, arg}
Wtf.Repo
]
# See https://hexdocs.pm/elixir/Supervisor.html
# for other strategies and supported options
opts = [strategy: :one_for_one, name: Wtf.Supervisor]
Supervisor.start_link(children, opts)
end
end
config.exs
import Config
config :wtf, Wtf.Repo,
database: "wtf_database",
username: "wtf",
password: "wtf",
hostname: "localhost",
port: "5050",
log: false
config :wtf, ecto_repos: [Wtf.Repo]
wtf.ex
defmodule Wtf do
import Ecto.Query, warn: false
alias Wtf.{Repo, Data}
def hello do
Repo.all(WtfData)
end
end
Below I am attaching list of my files in project like you can see that is just basic setup for quering database. When I run iex -S mix
app loading properly and I can query database all CRUD working fine, when I do Wtf.Repo.all(Wtf.Data)
I am getting all 3 rwos which I have in database. But when I am trying to run this app with mix run lib/wtf.ex
I am getting error function Repo.all/1 is undefined (module Repo is not abvailable)
I was looking in the google how to solve it and it seems like I am doing everything like it should be done. I follow few examples but always the same issue. Can some explain me what is wrong with it? What am I missing?
Sidenote: of course you don't need to build a release unless you want to run a release.
The below part of mix.exs
defines the application within your project and its entry point.
def application do
[
extra_applications: [:logger, :postgrex, :ecto, :ecto_sql],
# ⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓ THIS
mod: {Wtf.Application, []}
]
end
Instead of running an explicit file with mix run ‹file›
, do mix run
without a parameter, which is, according to docs,
can be used to start the current application dependencies, the application itself, and optionally run some code in its context.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.