小编mar*_*ada的帖子

Redis和Memcache还是只是Redis?

我通过简单的Rails.cache界面在我的Rails 3应用程序中使用memcached进行缓存,现在我想用redis和resque做一些后台作业处理.

我认为它们的不同足以保证同时使用它们.但是在heroku上,使用memcached和redis都有单独的费用.使用两者是否有意义,或者我应该迁移到只使用redis?

我喜欢使用memcached进行缓存,因为最近最少使用的密钥会自动从缓存中推出,而我不需要缓存数据.Redis对我来说几乎是新手,但我知道默认情况下它是持久的,并且密钥不会自动从缓存中过期.

编辑:只是想更清楚我的问题.我知道只使用Redis而不是两者都是可行的.我想我只是想知道这样做有什么特别的缺点吗?考虑到实现和基础设施,我不应该只使用Redis吗?(即,对于简单的缓存,memcached更快?)我没有找到任何确定的方法.

memcached ruby-on-rails heroku redis

84
推荐指数
5
解决办法
2万
查看次数

在Jekyll中突出显示markdown代码块的语法(不使用液体标签)

似乎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块中.有任何想法吗?

markdown syntax-highlighting jekyll redcarpet

43
推荐指数
4
解决办法
4万
查看次数

可能在rails中有"polymorphic has_one"关系?

我想做这样的事情:

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(或将来可能是另一个模型).

polymorphism activerecord ruby-on-rails

37
推荐指数
2
解决办法
3万
查看次数

为什么Heroku使用Postgresql?

我正忙着将一些MySQL特定的代码移植到Postgresql,以便与Heroku一起使用.只是想知道为什么Heroku使用Postgresql而不是MySQL?性能,架构等?

更新:来自heroku 博客文章:

在Heroku,我们相信PostgreSQL提供了强大功能,数据完整性,速度,标准兼容性以及地球上任何SQL数据库的开源代码的最佳组合.

mysql postgresql ruby-on-rails heroku

32
推荐指数
4
解决办法
1万
查看次数

如何#define NSString供全球使用?

我是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 的部分.

objective-c ios4

30
推荐指数
3
解决办法
4万
查看次数

移动mime类型可以回退到Rails中的"html"吗?

我在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"的别名,因此它似乎并不太牵强.

那么,有几个问题:

  1. 我做错了吗?或者,有更好的方法吗?
  2. 如果没有,如果移动设备或平板电脑文件不存在,我可以将移动设备和平板电脑的mime类型重新设置为html吗?

如果重要,我正在使用Rails 3.0.1.提前感谢任何指针.

编辑:我忘了提到的东西:我最终会转移到单独的子域(正如你在我的例子中看到的那样),所以模板加载确实需要自动发生,无论哪个before_filter运行.

mobile ruby-on-rails ruby-on-rails-3

22
推荐指数
1
解决办法
6871
查看次数

用于轨道堆栈的示例Puppet设置?(nginx,清漆,薄,postgres,memcached,redis)

我刚刚开始使用Puppet.示例演练和教程很好地帮助我理解Puppet的有用性和基本工具集,但是我很难概念化完整的堆栈.即使是高级教程似乎也没有让我清楚地了解需要发生什么.

在某些地方我可以学到一些完整的轨道堆栈示例吗?

ruby-on-rails puppet

17
推荐指数
1
解决办法
5893
查看次数

在不同的Rails应用程序之间共享ActiveRecord模型和数据的最佳方式?

我有几个rails应用程序将使用相同的核心模型和数据集,例如:

  • 应用
  • 开发商
  • 分类

每个应用程序都建立在这个核心数据之上,并以不同的方式使用它.例如,我可能在另一个应用程序中有类似的东西:

  • 活动
  • 用户
  • 应用(共享)
  • 开发人员(共享)
  • 分类(共享)

在它们之间共享模型数据的最佳方式是什么?应用程序,开发人员和类别数据对于每个应用程序都是相同的,因此我不想在每个应用程序的数据库中复制数据.

编辑:我正在考虑几个可能的解决方案:

  • Rails引擎(可以解决不同应用程序中的重复模型问题,但不会解决共享数据问题)
  • 使用ActiveResource访问核心数据(解决共享数据,但不解决共享模型问题)

activerecord ruby-on-rails heroku activeresource ruby-on-rails-3

12
推荐指数
1
解决办法
7384
查看次数

是否可以使用Rails呈现js文件并缩小输出?

我正在使用名为的模板为每个用户生成一些js输出example.js.erb.这基本上是一个javascript文件,我必须在其中输入用户的独特细节.我在用户的小部件中使用它.

是否有任何方法可以缩小js的渲染时间?现在正在正确呈现javascript,但它是长形式,我想缩小输出以减小文件大小并提高下载速度.

ruby-on-rails ruby-on-rails-3.1

7
推荐指数
1
解决办法
1136
查看次数

在用户等待时处理大量数据的最佳实践(在Rails中)?

我有一个bookmarklet,当使用时,将当前浏览器页面上的所有URL提交给Rails 3应用程序进行处理.在幕后我使用Typhoeus来检查每个URL是否返回2XX状态代码.目前,我通过对Rails服务器的AJAX请求启动此过程,只需等待它处理并返回结果.对于一个小集合,这非常快,但是当URL的数量非常大时,用户可以等待,例如10-15秒.

我已经考虑过使用延迟作业来处理用户线程之外的内容,但这似乎不是正确的用例.由于用户需要等到处理完成才能看到结果,并且延迟作业可能需要在作业开始之前最多五秒钟,我不能保证处理将尽快发生.不幸的是,在这种情况下这个等待时间是不可接受的.

理想情况下,我认为应该发生的是:

  • 用户点击bookmarklet
  • 数据被发送到服务器进行处理
  • 在旋转线程进行处理时,会立即返回等待页面
  • 等待页面定期通过ajax轮询处理结果并更新等待页面(例如:"处理的567个URL中的4个...")
  • 等待页面一旦准备好就会更新结果

一些额外的细节:

  • 我正在使用Heroku(长时间运行的进程在30秒后被杀死)
  • 登录和匿名用户都可以使用此功能

这是一种典型的方法,还是有更好的方法?我是否应该在处理过程中滚动自己的线程外处理程序来更新数据库,或者是否可以使用延迟作业(可以在Heroku上使用)?任何推动正确的方向将非常感激.

ruby-on-rails long-running-processes delayed-job ruby-on-rails-3

5
推荐指数
1
解决办法
372
查看次数

自定义非自动递增ActiveRecord"id"列可能吗?

我希望能够为Rails模型使用自定义ID(而不是自动递增默认值).基本上,所有的ID都是iTunes商店ID,它们只是长整数.是否可以关闭默认的自动递增ID并要求设置一个?这些ID也将在其他模型中用作外键.

activerecord ruby-on-rails

5
推荐指数
1
解决办法
2047
查看次数