Seed data in server with Arc File upload

I deploy my application using distillery and edeliver. everything work perfect. took me quite sometime to find a way to run seed in the server but there one more problem. In my seed there is a field that need file upload but the path in the server is different than the one on my development.

user_param = %{
                #somedata
                avatar:  %Plug.Upload{filename: "default-avatar.png", path: "uploads/default/default-avatar.png"}
               }  

The path work on my development but not on the server. so what is the best way to put a image seed file ?

Put it in your priv directory then use :code.priv_dir/1 to get the path. :slight_smile:

thank you

1 Like

the problem is fixed but the new problem is it said
(UndefinedFunctionError) function Comeonin.Bcrypt.hashpwsalt/1 is undefined (module Comeonin.Bcrypt is not available)

but i already included it the deps

defp deps do
  {:comeonin, "~> 4.0"},
  {:bcrypt_elixir, "~> 1.0"}
end

Which version of elixir are you using?

If elixir >= 1.5, please check if you have an :applications key in the application/0 function of your mix.exs. If yes change it to be :extra_applications, housekeeping can be done later…

If elixir < 1.5, please add comeonin to your :applications list in the application/0 function of your mix.exs.

2 Likes

i had add comonein in to my :applications but it is still error of bcrypt_elixir not found so i added it in to my application too but this error appear when i release it in to my server.

ERROR: release_handler:install_release failed: {'EXIT',
                                                {{badmatch,
                                                  {error,on_load_failure}},
                                                 [{release_handler_1,eval,2,
                                                   [{file,
                                                     "release_handler_1.erl"},
                                                    {line,353}]},
                                                  {lists,foldl,3,
                                                   [{file,"lists.erl"},
                                                    {line,1263}]},
                                                  {release_handler_1,
                                                   eval_script,5,
                                                   [{file,
                                                     "release_handler_1.erl"},
                                                    {line,102}]},
                                                  {release_handler,
                                                   eval_script,5,
                                                   [{file,
                                                     "release_handler.erl"},
                                                    {line,368}]},
                                                  {release_handler,
                                                   do_install_release,3,
                                                   [{file,
                                                     "release_handler.erl"},
                                                    {line,1024}]},
                                                  {release_handler,
                                                   handle_call,3,
                                                   [{file,
                                                     "release_handler.erl"},
                                                    {line,617}]},
                                                  {gen_server,
                                                   try_handle_call,4,
                                                   [{file,"gen_server.erl"},
                                                    {line,615}]},
                                                  {gen_server,handle_msg,5,
                                                   [{file,"gen_server.erl"},
                                                    {line,647}]}]}}

this is my application

def project do
    [app: :catastore,
     version: "0.1.3",
     elixir: "~> 1.5.1",
     elixirc_paths: elixirc_paths(Mix.env),
     compilers: [:phoenix, :gettext] ++ Mix.compilers,
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     aliases: aliases(),
     deps: deps()]
  end

  # Configuration for the OTP application.
  #
  # Type `mix help compile.app` for more information.
  def application do
    [mod: {Catastore, []},
     applications: [:phoenix, :phoenix_pubsub, :phoenix_html, :cowboy, :logger, :gettext,
                    :phoenix_ecto, :postgrex, :arc_ecto, :scrivener_ecto, :edeliver, :uuid, :comeonin, :bcrypt_elixir]]
  end

Do not do this! Please switch to :extra_applications and remove about everything but :logger… Elixirs dependencies inference should do the rest for you.

I am still getting the same error here is the code that i had changed

  def project do
    [app: :catastore,
     version: "0.1.3",
     elixir: "~> 1.5",
     elixirc_paths: elixirc_paths(Mix.env),
     compilers: [:phoenix, :gettext] ++ Mix.compilers,
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     aliases: aliases(),
     deps: deps()]
  end

def application do
      [mod: {Catastore, []},
       extra_applications: [:logger]]
end

 defp deps do
    [{:phoenix, "~> 1.2.4"},
     {:phoenix_pubsub, "~> 1.0"},
     {:phoenix_ecto, "~> 3.0"},
     {:postgrex, ">= 0.0.0"},
     {:phoenix_html, "~> 2.6"},
     {:phoenix_live_reload, "~> 1.0", only: :dev},
     {:gettext, "~> 0.11"},
     {:cowboy, "~> 1.0"},
     {:comeonin, "~> 4.0"},
     {:bcrypt_elixir, "~> 1.0"},
     {:guardian, "~> 0.14"},
     {:scrivener_ecto, "~> 1.0"},
     {:edeliver, "~> 1.4.4"},
     {:distillery, "~> 1.5"},
     {:uuid, "~> 1.1"},
     {:arc, "~> 0.8.0"},
     {:arc_ecto, "~> 0.7.0"}]
  end

ERROR: release_handler:install_release failed: {'EXIT',
                                                {{badmatch,
                                                  {error,on_load_failure}},
                                                 [{release_handler_1,eval,2,
                                                   [{file,
                                                     "release_handler_1.erl"},
                                                    {line,353}]},
                                                  {lists,foldl,3,
                                                   [{file,"lists.erl"},
                                                    {line,1263}]},
                                                  {release_handler_1,
                                                   eval_script,5,
                                                   [{file,
                                                     "release_handler_1.erl"},
                                                    {line,102}]},
                                                  {release_handler,
                                                   eval_script,5,
                                                   [{file,
                                                     "release_handler.erl"},
                                                    {line,368}]},
                                                  {release_handler,
                                                   do_install_release,3,
                                                   [{file,
                                                     "release_handler.erl"},
                                                    {line,1024}]},
                                                  {release_handler,
                                                   handle_call,3,
                                                   [{file,
                                                     "release_handler.erl"},
                                                    {line,617}]},
                                                  {gen_server,
                                                   try_handle_call,4,
                                                   [{file,"gen_server.erl"},
                                                    {line,615}]},
                                                  {gen_server,handle_msg,5,
                                                   [{file,"gen_server.erl"},
                                                    {line,647}]}]}}

Fixed the problem it was bcrypt_elixir version problem due to my erlang version in ubuntu so just change it to 0.12 and everything is working fine