假设您有一个显示最新帖子的页面片段,您将在30分钟后将其过期.我在这里使用Rails.
<% cache("recent_posts", :expires_in => 30.minutes) do %>
...
<% end %>
Run Code Online (Sandbox Code Playgroud)
显然,如果片段存在,您不需要进行数据库查找以获取最新的帖子,因此您也应该能够避免这种开销.
我现在正在做的是在控制器中这样的东西似乎工作:
unless Rails.cache.exist? "views/recent_posts"
@posts = Post.find(:all, :limit=>20, :order=>"updated_at DESC")
end
Run Code Online (Sandbox Code Playgroud)
这是最好的方法吗?安全吗?
我不明白的一件事是,为什么密钥是" recent_posts"用于片段和" views/recent_posts",以便稍后检查,但我看了之后memcached -vv看到它正在使用它.另外,我不喜欢手动输入" recent_posts" 的重复,最好将它保存在一个地方.
想法?
我们的测试需要一段时间才能运行,并且总有5-10分钟的时间我们知道哪个测试失败了,但是在套件完成之前我们无法看到失败消息或回溯.在它们发生时看到回溯会更有效.这可能吗?
我正在开发一个市场网站,导师和学生可以互相找到.我正在建立一个在线支付系统(很像elance或guru.com),导师可以获得报酬,我们会减少.
情侣问题:
从尼日利亚等特定国家/地区阻止IP地址的最佳方法是什么?(注意,我正在使用Ruby on Rails,因此任何特定于此的建议都会更好,但如果不是那么好.)
除了阻止某些IP之外,我还可以使用哪些其他技术?(我已经在进行AVS和普通网关检查).
我需要检查哪些常见的骗局?
例如,我能想到的是有人使用该系统自行付款,他们收到资金作为付款(减去我们的费用),然后在信用卡上进行退款.
我想这些类似于Paypal或Google Checkout等网站(有些称之为聚合网站)所面临的问题,因为它们只收取一小部分费用 - 因此,如果原始资金来源丢失,则会造成巨大损失(很多时候是利润涉及不同于普通的高利润产品).
结合其他笔记:
我已经看到了其他一些问题,但Prototype没有.
我有一个没有提交按钮的表单(使用调用一些javascript的样式链接).
在所有输入字段中检测输入按键并提交表单的最佳方法是什么?
谢谢!
有人知道为什么包含的方法在类方法中不起作用吗?
class MyClass
include ActionView::Helpers::NumberHelper
def test
puts "Uploading #{number_to_human_size 123}"
end
def self.test
puts "Uploading #{number_to_human_size 123}"
end
end
ree-1.8.7-2011.03 :004 > MyClass.new.test
Uploading 123 Bytes
=> nil
ree-1.8.7-2011.03 :005 > MyClass.test
NoMethodError: undefined method `number_to_human_size' for MyClass:Class
from /path/to/my/code.rb:9:in `test'
from (irb):5
ree-1.8.7-2011.03 :006 >
Run Code Online (Sandbox Code Playgroud) 使用时,我的功能测试中出现错误assert_equal:
1) [31mFailure[0m:
test_should_allow_dealer_to_extend_offer:21
<Thu, 14 Apr 2011 23:59:59 PDT -07:00> expected but was
<Thu, 14 Apr 2011 23:59:59 PDT -07:00>.
Run Code Online (Sandbox Code Playgroud)
请注意,两者显示相同的时间和时区.我检查了它们是同一类类型(ActiveSupport :: TimeWithZone).那他们为什么不平等呢?
它是数据库中的标准DateTime字段,我认为它只存储到第二个右边?
我可以通过将它们转换为整数或使用assert_in_delta1分钟的范围来通过它.但只是想知道.
顺便说一下这是Rails 2.3.8和MySQL.
在文档中它说你可以使用inverse_of:nil但是并没有真正描述用例:http: //mongoid.org/en/mongoid/docs/relations.html#has_and_belongs_to_many
我假设它在一个对象有很多另一个对象的情况下很有用,所以你可以完全用inverse_of nil跳过那一边并节省一些存储空间吗?
例如:
class Post
has_and_belongs_to_many :tags
end
class Tag
has_and_belongs_to_many :posts, inverse_of: nil
end
Run Code Online (Sandbox Code Playgroud)
标签可能属于数百或数千个帖子,但帖子可能只有5个标签左右.
那么这是一个很好的用例吗?我想你仍然可以做到
tag.posts
Run Code Online (Sandbox Code Playgroud)
像正常一样,主要的权衡是它改变了以下的查询:
Post.find(tag.post_ids)
Run Code Online (Sandbox Code Playgroud)
成
Post.where(tag_ids: tag.id)
Run Code Online (Sandbox Code Playgroud)
如果你有一个tag_ids的索引,它似乎仍然会很快.所以也许最好的是:
class Post
has_and_belongs_to_many :tags, index: true
end
class Tag
has_and_belongs_to_many :posts, inverse_of: nil
end
Run Code Online (Sandbox Code Playgroud)
只是想检查一下我的想法.
轨道中的Cron解决方案众多且非常好.那不是我在这里挣扎的.
相反,我遇到的麻烦就是让用户创建他们自己的重复任务(比如提醒) - 特别是如何在数据库中建模和存储这些任务(一个好的用户界面也是非常重要的 - 如果有的话会很棒)代码那里).谷歌日历在这里是一个很好的例子(添加活动的UI,而不是整个日历)......他们应该能够在每天下午1点CST,或周一/周三/周五,或每周等等.无论cron解决方案是什么然后使用将需要轮询数据库以查看在那个时间需要发送哪些提醒等.
有人在rails中看到过这个好插件/宝石吗?似乎会有一些东西,但我还没有找到它.
谢谢!
这些文本字段看起来很棒,在Facebook等网站上很常见.
基本上不是标记文本字段,而是通过将标签放在文本字段中来节省空间.通常,文本的颜色会变暗,当用户在文本字段中单击时,默认值会消失,颜色会切换为黑色或常规颜色,以便用户输入文本.
到目前为止,这就是我创建它们的方式:
# DEFAULT_VALUE = "email address"
<%= f.text_field :email,
:style => "color:#aaa;",
:value => DEFAULT_VALUE,
:onfocus => "if(this.getValue()=='#{DEFAULT_VALUE}'){this.clear();this.style.color = '#000';}",
:onblur => "if(this.getValue()==''){this.setValue('#{DEFAULT_VALUE}');this.style.color = '#aaa';}" %>
Run Code Online (Sandbox Code Playgroud)
这基本上有效.但是我注意到的一个问题是,如果你在字段中键入内容并提交失败的表单,表单将重新加载你在字段中输入的内容(应该如此),但文本被错误地调暗.如果您单击浏览器,也会发生这种情况.它将显示您输入的文本(不是默认值),但文本颜色会变暗.
有没有更简单的方法来解决上述问题?谢谢!
我有一些带有强硬换行符的文字,如下所示:
This should all be on one line
since it's one sentence.
This is a new paragraph that
should be separate.
Run Code Online (Sandbox Code Playgroud)
我想删除单个换行符,但保留双换行符,如下所示:
This should all be on one line since it's one sentence.
This is a new paragraph that should be separate.
Run Code Online (Sandbox Code Playgroud)
有没有一个正则表达式来做到这一点?(或一些简单的方法)
到目前为止,这是我唯一有效的解决方案,但却感觉很自负.
txt = txt.gsub(/(\r\n|\n|\r)/,'[[[NEWLINE]]]')
txt = txt.gsub('[[[NEWLINE]]][[[NEWLINE]]]', "\n\n")
txt = txt.gsub('[[[NEWLINE]]]', " ")
Run Code Online (Sandbox Code Playgroud) ruby ×4
javascript ×2
aggregation ×1
caching ×1
calendar ×1
fragment ×1
guard ×1
marketplace ×1
memcached ×1
minitest ×1
mongoid ×1
prototypejs ×1
recurring ×1
regex ×1
rspec ×1
rspec-rails ×1
rspec2 ×1
scheduling ×1
testing ×1