从现有的Phoenix项目中删除Ecto

时间:2016-07-21 07:01:31

标签: elixir phoenix-framework ecto

我有一个使用默认设置构建的现有项目。现在我看到我真的不需要Ecto。我只想从代码中删除所有与DB相关的事件。

有人可以指导我完成整个过程吗?

我已从mix.exs中删除了所有提及的Ecto,但我认为这还不够

更新:

我在lib / api_test / repo.ex文件中找到了ecto。如果我删除该行,则会出现以下错误

=INFO REPORT==== 21-Jul-2016::12:43:30 ===
    application: logger
    exited: stopped
    type: temporary
** (Mix) Could not start application api_test: ApiTest.start(:normal, []) returned an error: shutdown: failed to start child: ApiTest.Repo
    ** (EXIT) an exception was raised:
        ** (UndefinedFunctionError) function ApiTest.Repo.start_link/0 is undefined or private
            (api_loc) ApiTest.Repo.start_link()
            (stdlib) supervisor.erl:365: :supervisor.do_start_child/2
            (stdlib) supervisor.erl:348: :supervisor.start_children/3
            (stdlib) supervisor.erl:314: :supervisor.init_children/2
            (stdlib) gen_server.erl:328: :gen_server.init_it/6
            (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3

3 个答案:

答案 0 :(得分:10)

我想我有一个很好的解决方案。我创建了两个新的Phoenix项目,一个使用Ecto,一个使用--no-ecto标记(mix phoenix.new --no-ecto my_app)。然后我用Ecto初始化了一个Git仓库,添加并提交了所有内容,然后删除了所有文件,并用Ecto中的项目替换了它们。

结果是this commit on GitHub。我认为你会找到一个很好的起点来改变什么。

答案 1 :(得分:1)

现在可以使用mix ecto.drop -r MyApp.Repo(其中MyApp是应用程序的名称)完成此操作。请参见ecto.drop的指南。

此外,可以通过删除MyApp.Repo函数下的lib/my_app/application.exstart中的引用来手动完成此操作。

答案 2 :(得分:0)

完成了。

基本上遵循凤凰城的文件,包括https://hexdocs.pm/phoenix/1.3.0-rc.2/ecto_models.html

中提到的Ecto

正好与文件中提到的相反。