Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Documentation #31

Open
slogsdon opened this issue May 13, 2014 · 8 comments
Open

Update Documentation #31

slogsdon opened this issue May 13, 2014 · 8 comments

Comments

@slogsdon
Copy link
Member

It's a wee bit out of date

@slogsdon
Copy link
Member Author

Add model documentation for #44.

@slogsdon
Copy link
Member Author

Update docs for rendering for #34.

@slogsdon
Copy link
Member Author

Be sure to cover testing all aspects of a Sugar-based application. See #57.

@chasm
Copy link

chasm commented Apr 24, 2015

When I follow the documentation, I can get the templates rendering, but all attempts at json get this error:

2015-04-24 14:59:15.883 [error] Ranch listener PaperHat.Router.HTTP had connection
process started with :cowboy_protocol:start_link/4 at #PID<0.263.0> exit with reason:
{{%Poison.EncodeError{message: nil, value: {:message, "foobar"}},
[{Poison.Encoder.Any, :encode, 2, [file: 'lib/poison/encoder.ex', line: 213]},
{Poison.Encoder.List, :encode, 2, [file: 'lib/poison/encoder.ex', line: 169]},
{Poison, :encode!, 2, [file: 'lib/poison.ex', line: 41]},
{Sugar.Controller.Helpers, :json, 3, [file: 'lib/sugar/controller/helpers.ex', line: 132]},
{PaperHat.Controllers.Main, :call, 2, [file: 'lib/paper_hat/controllers/main.ex', line: 1]},
{PaperHat.Router, :do_call, 2, [file: 'lib/paper_hat/router.ex', line: 1]},
{Plug.Adapters.Cowboy.Handler, :upgrade, 4,
[file: 'lib/plug/adapters/cowboy/handler.ex', line: 15]}, 
{:cowboy_protocol, :execute, 4, [file: 'src/cowboy_protocol.erl', line: 435]}]},
{PaperHat.Router, :call, [%Plug.Conn{adapter: {Plug.Adapters.Cowboy.Conn, :...},
assigns: %{}, before_send: [], cookies: %Plug.Conn.Unfetched{aspect: :cookies},
halted: false, host: "localhost", method: "GET", owner: #PID<0.263.0>,
params: %Plug.Conn.Unfetched{aspect: :params}, path_info: ["json"],
peer: {{127, 0, 0, 1}, 56202}, port: 4000, private: %{}, query_string: "",
remote_ip: {127, 0, 0, 1}, req_cookies: %Plug.Conn.Unfetched{aspect: :cookies},
req_headers: [{"host", "localhost:4000"}, {"connection", "keep-alive"},
{"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"},
{"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36"},
{"dnt", "1"}, {"accept-encoding", "gzip,deflate,sdch"},
{"accept-language", "en-US,en;q=0.8,es;q=0.6"},
{"cookie", "_ga=GA1.1.476198168.1421808488"}], resp_body: nil, resp_cookies: %{},
resp_headers: [{"cache-control", "max-age=0, private, must-revalidate"}],
scheme: :http, script_name: [], secret_key_base: nil, state: :unset, status: nil}, []]}}

which, as far as I can tell, tells me nothing. Is this a documentation issue? Here is my controller:

defmodule PaperHat.Controllers.Main do
  use Sugar.Controller

  def index(conn, _args) do
    conn |> render
  end

  def show(conn, args) do
    conn |> render(args)
  end

  def get_json(conn, []) do
    json conn, [ message: "foobar" ]
  end
end

Index and show work fine. Get_JSON, not so much. Ideas?

Here's the config:

use Mix.Config

config :paper_hat, PaperHat.Repos.Main,
  database: "paper_hat",
  username: "***",
  password: "***",
  hostname: "localhost"

config :sugar,
  router: PaperHat.Router

config :sugar, PaperHat.Router,
  https_only: false,
  http: [ port: 4000 ],
  https: false

config :logger, :console,
  level: :info,
  format: "$date $time [$level] $metadata$message\n",
  metadata: [:user_id]

@slogsdon
Copy link
Member Author

@chasm It looks like the Poison encoder is what is throwing the error. By default, Poison doesn't include a definition for tuples in its Poison.Encoder protocol, and since Keyword lists are lists of tuple pairs, Poison doesn't know what to do.

An easy fix for this should be to change your Keyword list to a Map. A more involved fix would be to implement the protocol for two-element tuples.

I'm mobile right now, so I apologize for the lack of examples. Let me know if this doesn't work for you. and I'll follow up again with some concrete fixes.

@chasm
Copy link

chasm commented Apr 24, 2015

That worked. Changed docs to reflect it and sent a pull request on the doc repo.

Thanks!

@slogsdon
Copy link
Member Author

Great! Let us know if you run into any other issues or if you have any suggestions.

@chasm
Copy link

chasm commented Apr 24, 2015

Happy to!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants