小编Mik*_*ona的帖子

如何在自定义混合任务中从Ecto获取数据

我想在自定义混合任务中通过Ecto显示来自我的数据库的数据.如何在我的任务中获得Ecto仓库(或启动它)?

我试过这样的东西,但它不起作用:

defmodule Mix.Tasks.Users.List do


use Mix.Task
  use Mix.Config
  use Ecto.Repo, otp_app: :app

  @shortdoc "List active users"
  @moduledoc """
    List active users
  """
  def run(_) do
    import Ecto.Query, only: [from: 1]

    Mix.shell.info "=== Active users ==="
    query = from u in "users"
    sync = all(query)
    Enum.each(users, fn(s) -> IO.puts(u.name) end)
  end

end
Run Code Online (Sandbox Code Playgroud)

当我启动mix users.list时,这会给我以下输出:

** (ArgumentError) repo Mix.Tasks.Users.List is not started, please ensure it is part of your supervision tree
    lib/ecto/query/planner.ex:64: Ecto.Query.Planner.query_lookup/5
    lib/ecto/query/planner.ex:48: Ecto.Query.Planner.query_with_cache/6
    lib/ecto/repo/queryable.ex:119: Ecto.Repo.Queryable.execute/5
Run Code Online (Sandbox Code Playgroud)

有什么想法或其他方法来解决这个问题?

elixir-mix elixir phoenix-framework

11
推荐指数
2
解决办法
2194
查看次数

如何从模板中复制Rails生成器中的整个目录

我正在创建一个rails生成器,我想从模板中复制整个目录.我正在使用FileUtils.cp_r并且它可以工作,但问题是我需要从rails app目录中精确模板目录的路径,而不是像使用copy_file那样具有相对路径:例如,我有

FileUtils.cp_r 'lib/generators/cms/templates/content_wrappers', 'app/views/content_wrappers'
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我想尽可能使用像copy_file中的相对路径.任何的想法?

ruby-on-rails file

6
推荐指数
1
解决办法
3242
查看次数

来自插件的Rails 3控制器

我正在创建一个Rails 3插件,我想在其中集成控制器,这些控制器将被rails自动考虑为app/controllers文件夹中的"普通"控制器.我怎么能这样做或者从插件中获得自定义控制器的最佳解决方案是什么?我找到了来自guides.rubyonrails.org的文档,但他们已经更改了文档,插件开发不再包含控制器了.

谢谢

plugins controllers ruby-on-rails-3

4
推荐指数
1
解决办法
512
查看次数