Skip to content

Commit

Permalink
[rails] Return plain json from route
Browse files Browse the repository at this point in the history
Return JSON from the routes is a lot faster:

+------------+------------------------------+------+
|        name|                   branch_name|  json|
+------------+------------------------------+------+
|rails-iodine|                        master|105369|
|rails-iodine|         rails/json-from-route|144006|
+------------+------------------------------+------+
  • Loading branch information
p8 committed Jan 28, 2025
1 parent 523534b commit 1de1af2
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 27 deletions.

This file was deleted.

9 changes: 0 additions & 9 deletions frameworks/Ruby/rails/app/controllers/json_controller.rb

This file was deleted.

54 changes: 44 additions & 10 deletions frameworks/Ruby/rails/config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,19 +1,53 @@
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html

get "json", to: JsonController.action(:index)
JsonApp = if defined?(Falcon) || defined?(Puma) || defined?(Agoo)
->(env) do
[200,
{
'Server' => 'Rails',
'Content-Type' => 'application/json',
'Date' => Time.now.httpdate,
},
[{ 'message' => 'Hello, World!' }.to_json]]
end
else
->(env) do
[200,
{
'Server' => 'Rails',
'Content-Type' => 'application/json'
},
[{ 'message' => 'Hello, World!' }.to_json]]
end
end

PlaintextApp = if defined?(Falcon) || defined?(Puma)
->(env) do
[200,
{
'Server' => 'Rails',
'Content-Type' => 'text/plain',
'Date' => Time.now.httpdate
},
['Hello, World!']]
end
else
->(env) do
[200,
{
'Server' => 'Rails',
'Content-Type' => 'text/plain'
},
['Hello, World!']]
end
end

get "json", to: JsonApp
get "db", to: "hello_world#db"
get "queries", to: "hello_world#query"
get "fortunes", to: "hello_world#fortune"
get "updates", to: "hello_world#update"
get "plaintext", to: ->(env) do
[200,
{
'Content-Type' => 'text/plain',
'Date' => Time.now.httpdate,
'Server' => 'Rails'
},
['Hello, World!']]
end
get "plaintext", to: PlaintextApp
get "cached", to: "hello_world#cached_query"
end

0 comments on commit 1de1af2

Please sign in to comment.