我通过简单的Rails.cache界面在我的Rails 3应用程序中使用memcached进行缓存,现在我想用redis和resque做一些后台作业处理.
我认为它们的不同足以保证同时使用它们.但是在heroku上,使用memcached和redis都有单独的费用.使用两者是否有意义,或者我应该迁移到只使用redis?
我喜欢使用memcached进行缓存,因为最近最少使用的密钥会自动从缓存中推出,而我不需要缓存数据.Redis对我来说几乎是新手,但我知道默认情况下它是持久的,并且密钥不会自动从缓存中过期.
编辑:只是想更清楚我的问题.我知道只使用Redis而不是两者都是可行的.我想我只是想知道这样做有什么特别的缺点吗?考虑到实现和基础设施,我不应该只使用Redis吗?(即,对于简单的缓存,memcached更快?)我没有找到任何确定的方法.
似乎Jekyll中的语法突出显示仅限于使用液体标签和pygments,如下所示:
{% highlight bash %}
cd ~
{% endhighlight %}
Run Code Online (Sandbox Code Playgroud)
但是我从wordpress导入了我现有的博客,它是用markdown编写的(使用markdown代码块),我不想通过每个帖子来修复代码块.此外,我想以纯缩写格式保留我的帖子,以防我再次需要切换博客平台.
我将我的Jekyll解析器切换到redcarpet希望我可以使用这个markdown语法:
```bash
cd ~
```
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.它只是将它包裹在一个正常的code块中.有任何想法吗?
我想做这样的事情:
Category
--------
- id
- name
Tag
--------
- id
- tag
Campaign
--------
- id
- name
- target (either a tag *or* a category)
Run Code Online (Sandbox Code Playgroud)
这是一个多态关联的答案吗?我似乎无法弄清楚如何使用has_one:target,:as =>:targetable.
基本上,我希望Campaign.target设置为Tag或Category(或将来可能是另一个模型).
我正忙着将一些MySQL特定的代码移植到Postgresql,以便与Heroku一起使用.只是想知道为什么Heroku使用Postgresql而不是MySQL?性能,架构等?
更新:来自heroku 博客文章:
在Heroku,我们相信PostgreSQL提供了强大功能,数据完整性,速度,标准兼容性以及地球上任何SQL数据库的开源代码的最佳组合.
我是Objective-C的新手.基本上我想将一组端点URL存储为在我的应用程序中使用的字符串,但我需要一个基于应用程序是否处于DEBUG模式的不同域.我认为使用头文件(Common.h例如)和一些简单的定义可能是有用的,如下所示:
#ifdef DEBUG
#define kAPIEndpointHost @"http://example.dev"
#else
#define kAPIEndpointHost @"http://www.example.com"
#endif
#define kAPIEndpointLatest [kAPIEndpointHost stringByAppendingString:@"/api/latest_content"]
#define kAPIEndpointMostPopular [kAPIEndpointHost stringByAppendingString:@"/api/most_popular"]
Run Code Online (Sandbox Code Playgroud)
显然这不起作用,因为你不能明显地将常量基于另一个常量的值.
这样做的"正确"方法是什么?只有拥有一个返回正确端点值的类方法的适当类才更有意义吗?
编辑:为了清楚,基于主机字符串的"Latest"和"MostPopular" 字符串是我最麻烦的.编译器不喜欢stringByAppendingString#defines 的部分.
我在ApplicationController中使用此代码(取自此处)来检测iPhone,iPod Touch和iPad请求:
before_filter :detect_mobile_request, :detect_tablet_request
protected
def detect_mobile_request
request.format = :mobile if mobile_request?
end
def mobile_request?
#request.subdomains.first == 'm'
request.user_agent =~ /iPhone/ || request.user_agent =~ /iPod/
end
def detect_tablet_request
request.format = :tablet if tablet_request?
end
def tablet_request?
#request.subdomains.first == 't'
request.user_agent =~ /iPad/
end
Run Code Online (Sandbox Code Playgroud)
这允许我有像show.html.erb,show.mobile.erb和show.tablet.erb这样的模板,这很好,但是有一个问题:似乎我必须为每个mime类型定义每个模板.例如,即使定义了show.html.erb,在不定义show.mobile.erb的情况下从iPhone请求"show"操作也会引发错误.如果缺少移动设备或平板电脑模板,我只想简单地使用html设备.由于"mobile"被定义为mime_types.rb中"text/html"的别名,因此它似乎并不太牵强.
那么,有几个问题:
如果重要,我正在使用Rails 3.0.1.提前感谢任何指针.
编辑:我忘了提到的东西:我最终会转移到单独的子域(正如你在我的例子中看到的那样),所以模板加载确实需要自动发生,无论哪个before_filter运行.
我有几个rails应用程序将使用相同的核心模型和数据集,例如:
每个应用程序都建立在这个核心数据之上,并以不同的方式使用它.例如,我可能在另一个应用程序中有类似的东西:
在它们之间共享模型和数据的最佳方式是什么?应用程序,开发人员和类别数据对于每个应用程序都是相同的,因此我不想在每个应用程序的数据库中复制数据.
编辑:我正在考虑几个可能的解决方案:
activerecord ruby-on-rails heroku activeresource ruby-on-rails-3
我正在使用名为的模板为每个用户生成一些js输出example.js.erb.这基本上是一个javascript文件,我必须在其中输入用户的独特细节.我在用户的小部件中使用它.
是否有任何方法可以缩小js的渲染时间?现在正在正确呈现javascript,但它是长形式,我想缩小输出以减小文件大小并提高下载速度.
我有一个bookmarklet,当使用时,将当前浏览器页面上的所有URL提交给Rails 3应用程序进行处理.在幕后我使用Typhoeus来检查每个URL是否返回2XX状态代码.目前,我通过对Rails服务器的AJAX请求启动此过程,只需等待它处理并返回结果.对于一个小集合,这非常快,但是当URL的数量非常大时,用户可以等待,例如10-15秒.
我已经考虑过使用延迟作业来处理用户线程之外的内容,但这似乎不是正确的用例.由于用户需要等到处理完成才能看到结果,并且延迟作业可能需要在作业开始之前最多五秒钟,我不能保证处理将尽快发生.不幸的是,在这种情况下这个等待时间是不可接受的.
理想情况下,我认为应该发生的是:
一些额外的细节:
这是一种典型的方法,还是有更好的方法?我是否应该在处理过程中滚动自己的线程外处理程序来更新数据库,或者是否可以使用延迟作业(可以在Heroku上使用)?任何推动正确的方向将非常感激.
ruby-on-rails long-running-processes delayed-job ruby-on-rails-3
我希望能够为Rails模型使用自定义ID(而不是自动递增默认值).基本上,所有的ID都是iTunes商店ID,它们只是长整数.是否可以关闭默认的自动递增ID并要求设置一个?这些ID也将在其他模型中用作外键.
activerecord ×3
heroku ×3
delayed-job ×1
ios4 ×1
jekyll ×1
markdown ×1
memcached ×1
mobile ×1
mysql ×1
objective-c ×1
polymorphism ×1
postgresql ×1
puppet ×1
redcarpet ×1
redis ×1