Skip to content

Custom plural module depends on filesystem location #408

@dkuku

Description

@dkuku

I've been debugging a simple issue too long, It may be more related to elixir compiler but as I found it in this project so I'm posting here.
I created a plural module in /lib/myapp/gettext/plural.ex and referenced it from config.
No matter what I did It ended up with :nofile error. I started to remove the nested namespaces.
First I moved it to lib/myapp/plural.ex but no luck and then I created a minimal app with just gettext and plural in lib folder.
It worked ok. So I moved it to lib in my app where it also worked ok!!!.
Then I moved it back to lib/myapp/plural.ex removed the build folder and again it's not working.

20:48:48.018 [error] Task #PID<0.463.0> started from #PID<0.95.0> terminating
** (ArgumentError) could not load module Gtx.Plural due to reason :nofile
    (elixir 1.18.0) lib/code.ex:2005: Code.ensure_compiled!/1
    (gettext 0.26.2) lib/gettext/plural.ex:365: Gettext.Plural.plural_info/3
    (gettext 0.26.2) lib/gettext/merger.ex:301: Gettext.Merger.put_plural_forms_opt/3
    (gettext 0.26.2) lib/gettext/merger.ex:57: Gettext.Merger.merge/5
    (gettext 0.26.2) lib/mix/tasks/gettext.merge.ex:238: Mix.Tasks.Gettext.Merge.merge_files/5
    (gettext 0.26.2) lib/mix/tasks/gettext.merge.ex:206: anonymous fn/5 in Mix.Tasks.Gettext.Merge.merge_dirs/5
    (elixir 1.18.0) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
    (elixir 1.18.0) lib/task/supervised.ex:36: Task.Supervised.reply/4
Function: &:erlang.apply/2
    Args: [#Function<2.97866325/1 in Mix.Tasks.Gettext.Merge.merge_dirs/5>, ["priv/gettext/default.pot"]]

Minimal example repo - in this state it's failing for me with the error above.

Another terminal output where the plural.ex is in lib folder - here rerunning the mix gettext.extract fixed it somehow. But it was extracted previously so running it was not needed and the error points to missing Gtx.Plural module:

    ~/Projects/gtx    master !2 ?1  mix gettext.merge priv/gettext --locale=xx                                                     ✔ 
==> expo
Compiling 2 files (.erl)
Compiling 22 files (.ex)
Generated expo app
==> gettext
Compiling 18 files (.ex)
Generated gettext app

21:11:29.430 [error] Task #PID<0.463.0> started from #PID<0.95.0> terminating
** (ArgumentError) could not load module Gtx.Plural due to reason :nofile
    (elixir 1.18.0) lib/code.ex:2005: Code.ensure_compiled!/1
    (gettext 0.26.2) lib/gettext/plural.ex:365: Gettext.Plural.plural_info/3
    (gettext 0.26.2) lib/gettext/merger.ex:301: Gettext.Merger.put_plural_forms_opt/3
    (gettext 0.26.2) lib/gettext/merger.ex:222: Gettext.Merger.new_po_file/4
    (gettext 0.26.2) lib/mix/tasks/gettext.merge.ex:228: Mix.Tasks.Gettext.Merge.merge_or_create/5
    (gettext 0.26.2) lib/mix/tasks/gettext.merge.ex:206: anonymous fn/5 in Mix.Tasks.Gettext.Merge.merge_dirs/5
    (elixir 1.18.0) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
    (elixir 1.18.0) lib/task/supervised.ex:36: Task.Supervised.reply/4
Function: &:erlang.apply/2
    Args: [#Function<2.97866325/1 in Mix.Tasks.Gettext.Merge.merge_dirs/5>, ["priv/gettext/default.pot"]]
** (EXIT from #PID<0.95.0>) an exception was raised:
    ** (ArgumentError) could not load module Gtx.Plural due to reason :nofile
        (elixir 1.18.0) lib/code.ex:2005: Code.ensure_compiled!/1
        (gettext 0.26.2) lib/gettext/plural.ex:365: Gettext.Plural.plural_info/3
        (gettext 0.26.2) lib/gettext/merger.ex:301: Gettext.Merger.put_plural_forms_opt/3
        (gettext 0.26.2) lib/gettext/merger.ex:222: Gettext.Merger.new_po_file/4
        (gettext 0.26.2) lib/mix/tasks/gettext.merge.ex:228: Mix.Tasks.Gettext.Merge.merge_or_create/5
        (gettext 0.26.2) lib/mix/tasks/gettext.merge.ex:206: anonymous fn/5 in Mix.Tasks.Gettext.Merge.merge_dirs/5
        (elixir 1.18.0) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
        (elixir 1.18.0) lib/task/supervised.ex:36: Task.Supervised.reply/4

    ~/Projects/gtx    master !2 ?1  mix gettext.extract                                                                          1 ✘ 
Compiling 3 files (.ex)
Generated gtx app
    ~/Projects/gtx    master !2 ?1  mix gettext.merge priv/gettext --locale=xx                                                     ✔ 
Wrote priv/gettext/xx/LC_MESSAGES/default.po (1 new message, 0 removed, 0 unchanged, 0 reworded (fuzzy), 0 marked as obsolete)
    ~/Projects/gtx    master !1 ?1                                                                                    

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions