Antes de pensar em "vamos reescrever tudo na linguagem mais rápida da moda que tudo vai dar certo". Na verdade pra quase todas as aplicações Web, antes veja se você segue este checklist mínimo de 9 dicas. Você vai ver que a maioria não segue esse mínimo antes, e deveria.
40. def
sitemap
sleep
3
@posts
=
Post.select([
:id,
:slug,
:updated_at,
:published_at
]).published
respond_to
do
|format|
format.xml
{
render
layout:
false
}
end
end
Processing
by
ArchivesController#sitemap
as
XML
Rendered
archives/sitemap.xml.builder
(785.5ms)
Completed
200
OK
in
3879.4ms
(Views:
770.4ms
|
ActiveRecord:
18.7ms
|
Solr:
0.0ms)
41. def
sitemap
@posts
=
cache('sitemap',
:expires_in
=>
12.hours)
{
sleep
3
Post.select([
:id,
:slug,
:updated_at,
:published_at
]).published
}
respond_to
do
|format|
format.xml
{
render
layout:
false
}
end
end
Processing
by
ArchivesController#sitemap
as
XML
Rendered
archives/sitemap.xml.builder
(763.3ms)
Completed
200
OK
in
842.4ms
(Views:
754.2ms
|
ActiveRecord:
13.3ms
|
Solr:
0.0ms)
42. def
sitemap
@posts
=
cache('sitemap',
:expires_in
=>
12.hours)
{
Post.select([
:id,
:slug,
:updated_at,
:published_at
]).published
}
if
stale?(last_modified:
@posts.first.updated_at.utc,
etag:
"posts/#{@posts.count}-‐#{@posts.first.updated_at.utc}")
respond_to
do
|format|
format.xml
{
render
layout:
false
}
end
end
end
Processing
by
ArchivesController#sitemap
as
XML
Completed
304
Not
Modified
in
6.2ms
(ActiveRecord:
1.7ms)
94. #
app/controllers/posts_controller.rb
def
index
@posts
=
Post.all
respond_to
do
|format|
format.html
#
index.html.erb
format.xml
{
render
:xml
=>
@posts
}
end
end
<%
@posts.each
do
|post|
%>
<tr>
<td><%=
post.name
%></td>
<td><%=
post.comments.size
%></td>
<td><%=
link_to
'Show',
post
%></td>
<td><%=
link_to
'Edit',
edit_post_path(post)
%></td>
<td><%=
link_to
'Destroy',
post,
confirm:
'Are
you
sure?',
method:
:delete
%></td>
</tr>
<%
end
%>
95. #
app/controllers/posts_controller.rb
def
index
@posts
=
Post.all
respond_to
do
|format|
format.html
#
index.html.erb
format.xml
{
render
:xml
=>
@posts
}
end
end
<%
@posts.each
do
|post|
%>
<tr>
<td><%=
post.name
%></td>
<td><%=
post.comments.size
%></td>
<td><%=
link_to
'Show',
post
%></td>
<td><%=
link_to
'Edit',
edit_post_path(post)
%></td>
<td><%=
link_to
'Destroy',
post,
confirm:
'Are
you
sure?',
method:
:delete
%></td>
</tr>
<%
end
%>
Started
GET
"/posts/"
for
192.168.47.2
at
2015-‐03-‐23
18:31:11
+0000
Cannot
render
console
from
192.168.47.2!
Allowed
networks:
127.0.0.1,
::1,
127.0.0.0/127.255.255.255
ActiveRecord::SchemaMigration
Load
(0.1ms)
SELECT
"schema_migrations".*
FROM
"schema_migrations"
Processing
by
PostsController#index
as
HTML
Post
Load
(0.2ms)
SELECT
"posts".*
FROM
"posts"
Comment
Load
(0.2ms)
SELECT
"comments".*
FROM
"comments"
WHERE
"comments"."post_id"
=
?
[["post_id",
1]]
Comment
Load
(0.1ms)
SELECT
"comments".*
FROM
"comments"
WHERE
"comments"."post_id"
=
?
[["post_id",
2]]
Rendered
posts/index.html.erb
within
layouts/application
(25.3ms)
Completed
200
OK
in
679ms
(Views:
666.4ms
|
ActiveRecord:
1.0ms)
96.
97. #
app/controllers/posts_controller.rb
def
index
@posts
=
Post.all
respond_to
do
|format|
format.html
#
index.html.erb
format.xml
{
render
:xml
=>
@posts
}
end
end
<%
@posts.each
do
|post|
%>
<tr>
<td><%=
post.name
%></td>
<td><%=
post.comments.size
%></td>
<td><%=
link_to
'Show',
post
%></td>
<td><%=
link_to
'Edit',
edit_post_path(post)
%></td>
<td><%=
link_to
'Destroy',
post,
confirm:
'Are
you
sure?',
method:
:delete
%></td>
</tr>
<%
end
%>
Started
GET
"/posts/"
for
192.168.47.2
at
2015-‐03-‐23
18:31:11
+0000
Cannot
render
console
from
192.168.47.2!
Allowed
networks:
127.0.0.1,
::1,
127.0.0.0/127.255.255.255
ActiveRecord::SchemaMigration
Load
(0.1ms)
SELECT
"schema_migrations".*
FROM
"schema_migrations"
Processing
by
PostsController#index
as
HTML
Post
Load
(0.2ms)
SELECT
"posts".*
FROM
"posts"
Comment
Load
(0.2ms)
SELECT
"comments".*
FROM
"comments"
WHERE
"comments"."post_id"
=
?
[["post_id",
1]]
Comment
Load
(0.1ms)
SELECT
"comments".*
FROM
"comments"
WHERE
"comments"."post_id"
=
?
[["post_id",
2]]
Rendered
posts/index.html.erb
within
layouts/application
(25.3ms)
Completed
200
OK
in
679ms
(Views:
666.4ms
|
ActiveRecord:
1.0ms)
98. Started
GET
"/posts/"
for
192.168.47.2
at
2015-‐03-‐23
18:37:31
+0000
Cannot
render
console
from
192.168.47.2!
Allowed
networks:
127.0.0.1,
::1,
127.0.0.0/127.255.255.255
ActiveRecord::SchemaMigration
Load
(0.1ms)
SELECT
"schema_migrations".*
FROM
"schema_migrations"
Processing
by
PostsController#index
as
HTML
Post
Load
(0.2ms)
SELECT
"posts".*
FROM
"posts"
Comment
Load
(0.2ms)
SELECT
"comments".*
FROM
"comments"
WHERE
"comments"."post_id"
IN
(1,
2)
Rendered
posts/index.html.erb
within
layouts/application
(25.8ms)
Completed
200
OK
in
109ms
(Views:
96.4ms
|
ActiveRecord:
0.9ms)
#
app/controllers/posts_controller.rb
def
index
@posts
=
Post.includes(:comments).all
respond_to
do
|format|
format.html
#
index.html.erb
format.xml
{
render
:xml
=>
@posts
}
end
end
<%
@posts.each
do
|post|
%>
<tr>
<td><%=
post.name
%></td>
<td><%=
post.comments.size
%></td>
<td><%=
link_to
'Show',
post
%></td>
<td><%=
link_to
'Edit',
edit_post_path(post)
%></td>
<td><%=
link_to
'Destroy',
post,
confirm:
'Are
you
sure?',
method:
:delete
%></td>
</tr>
<%
end
%>
116. class
VerySlowJob
<
ActiveJob::Base
queue_as
:default
def
perform(*args)
#
Tarefa
Demorada
end
end
117. class
VerySlowJob
<
ActiveJob::Base
queue_as
:default
def
perform(*args)
#
Tarefa
Demorada
end
end
VerySlowJob.perform_later
record
118. class
VerySlowJob
<
ActiveJob::Base
queue_as
:default
def
perform(*args)
#
Tarefa
Demorada
end
end
VerySlowJob.perform_later
record
VerySlowJob.set(wait_until:
Date.tomorrow.noon).perform_later(record)
119. class
VerySlowJob
<
ActiveJob::Base
queue_as
:default
def
perform(*args)
#
Tarefa
Demorada
end
end
VerySlowJob.set(wait:
1.week).perform_later(record)
VerySlowJob.perform_later
record
VerySlowJob.set(wait_until:
Date.tomorrow.noon).perform_later(record)
120. #
app/workers/report_job.rb
class
ReportJob
<
ActiveJob::Base
queue_as
:default
def
perform(email,
from_date
=
nil,
to_date
=
nil)
now
=
Time.zone.now
from_date
||=
now
-‐
1.year
to_date
||=
now
file_path
=
ModelGigante.generate_excel(from_date,
to_date)
NotifyReportMailer.send(email,
file_path)
end
end
121. #
app/controllers/reports_controller.rb
#
...
def
create
ReportJob.perform_later(params[:email],
params[:from_date],
params[:to_date])
flash[:notice]
=
"Report
is
being
generated.
It
will
be
sent
to
your
email."
redirect_to
reports_path
end
#
...
#
app/workers/report_job.rb
class
ReportJob
<
ActiveJob::Base
queue_as
:default
def
perform(email,
from_date
=
nil,
to_date
=
nil)
now
=
Time.zone.now
from_date
||=
now
-‐
1.year
to_date
||=
now
file_path
=
ModelGigante.generate_excel(from_date,
to_date)
NotifyReportMailer.send(email,
file_path)
end
end