【问题标题】:How to include dummy phoenix app as part of a library如何将虚拟凤凰应用程序作为库的一部分包含在内
【发布时间】:2017-09-06 13:53:15
【问题描述】:

如果您熟悉 Rails,引擎插件中有 test/dummy rails 应用程序,用于测试等。

我将如何在我的库中包含类似的内容?我需要那个 phoenix 应用程序,这样我就可以使用从 Ecto 模型呈现一些数据的视图。我不希望那个虚拟应用程序与我的库的其余部分一起编译。从技术上讲,我可以制作一个单独的 repo,但我想知道有没有更好的方法。

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    如果纯粹出于开发目的,最好在伞模式下创建一个 Phoenix 应用程序并将您的库添加为普通伞子应用程序。

    这样,您可以使用 Phoenix,但它与您的 lib 完全解耦,只是像任何其他用户一样使用您的 lib 作为依赖项。

    设置它的示例命令:

    mix phx.new my_lib_dev --umbrella
    
    cd my_lib_dev_umbrella/apps
    
    mix new my_lib
    

    然后在my_lib_dev_umbrella/apps/my_lib_dev_web/mix.exs 中,您可以使用{:my_lib, in_umbrella: true} 添加您的库作为依赖项。

    现在您可以在 my_lib_dev_umbrella/apps/my_lib 中开发您的库,与 Phoenix 本身完全解耦,但您的 Phoenix 设置将其作为依赖项包含在内,并且其行为方式与用户从 Hex 中提取的一样。

    如果您不熟悉雨伞设置,可以在此处阅读更多相关信息: Umbrella Projects · Elixir School

    【讨论】:

    • 有这种设置的例子吗?澄清一下,这是否意味着与 lib 完全独立的项目?
    • 嘿,我用示例命令编辑了我的帖子。我希望它足够清楚。
    • 回到您的问题。不,这不是一个真正的单独项目。它更像是您的库周围的容器。 my_lib_dev_umbrella/apps/my_lib 是您推送到 GitHub 并在 Hex 上发布的整个库。周围的一切都只是开发的辅助设置。
    • 啊,有趣。所以我可以只发布 lib 应用程序。似乎它为非网络部分创建了一个成熟的凤凰应用程序。我刚刚注意到elixirc_paths 键是project 方法。也许只需将dummy 保留在根文件夹中并从那里链接lib 就不会那么麻烦了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2017-09-04
    相关资源
    最近更新 更多