小编tsd*_*own的帖子

使用Phusion Passenger和Rails时,初始服务器启动缓慢

为了跳上Phusion Passenger的乐队,我们为一个小型rails应用程序设置了一个临时服务器来测试.

到目前为止,使用它非常好,它使安装/配置和部署应用程序变得轻而易举.问题是我们使用的网站不会经常受到影响,似乎在后台关闭服务器.这意味着当某人进入该站点时,他们会等待很长时间,直到它启动一个新服务器来处理该请求.我们已经阅读了文档,尝试了很多不同的设置(智能/智能-lv2模式,乘客时间等),但仍然没有找到真正的解决方案.

在浏览Google结果后,我们无法真正找到有用的信息.目前,我们有一个cron作业,每隔一段时间发出一次请求,试图让服务器保持运行.

是否有其他人遇到此问题,您对修复有任何建议吗?

deployment ruby-on-rails passenger phusion

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

Rails:如何为ruby模块编写测试?

我想知道如何为一个混合成几个类的模块编写单元测试但是不太知道如何去做:

  1. 我是通过在其中一个测试文件中为包含它们的类(似乎不对)编写测试来测试实例方法,还是以某种方式将所包含方法的测试保存在特定于模块的单独文件中?

  2. 同样的问题适用于类方法.

  3. 我是否应该为模块中的每个类提供单独的测试文件,例如普通的rails模型,或者它们是否存在于通用模块测试文件中(如果存在的话)?

ruby testing unit-testing module ruby-on-rails

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

为Rails应用程序构建ruby gem

作为一个Rails开发人员,我觉得有点愚蠢地问这个问题,但希望我会学到一些新东西,有人可以让我摆脱困境!在我的rails应用程序中,我一直使用(其他人)宝石,我也使用来自社区或我自己的插件.

我理解使用宝石而不是插件的好处,因为它们是版本,分段,系统范围,更易于管理和共享等等,但我真的不知道如何为我的rails应用程序制作宝石!?

你总是从一个插件开始并将其转换为宝石,我已经看到了"将它打包为宝石"这几个字.另外我正在考虑构建的宝石在普通的ruby程序中并不好用,它只对rails应用程序有用.我甚至不确定它的语义是否有意义,'RubyGem'只适用于rails应用程序!?

我想创建一个gem(如果这是我应该使用的?),为我的rails应用程序提供一个独立的功能.它需要添加数据库迁移,新路由并提供控制器和视图或有用的视图助手.我知道我可以通过一个插件来实现这个目标,但是我想知道如何/为什么要将它作为'Ruby Gem'来实现?

rubygems ruby-on-rails ruby-on-rails-plugins

18
推荐指数
1
解决办法
6428
查看次数

GitHub,Git,如何向上游存储库提交更改

我们已经在内部使用Git很长一段时间了,并且在我们的团队中有很好的工作流程.昨天我们想在GitHub上为一个项目提交一些错误修复.这对我们来说是新鲜事.所以这就是我们做的:

  1. 克隆他们的存储库
  2. 分叉上游
  3. 添加了我们的分叉作为遥控器
  4. 修复了主分支中的一些错误
  5. 将主人推到我们的远程叉子上
  6. 发送拉取请求
  7. 他们撤消了变化
  8. git fetch origin
  9. 在主人: git merge origin/master

这是正确的做事方式吗?我们最终得到了一个额外的"Merge commit'gengen/master'"消息,其他开发人员似乎并没有这样做.同样在日志中我们可以看到两次提交.

一切似乎都没问题,但感觉不对.有没有好的GitHub工作流程页面?Git帮助页面似乎错过了如何进行本地更改的部分.

我想如果我们在将更改推送到fork之后回滚我们的主分支,我们就不会遇到这个问题,但这也感觉不对.

git github

11
推荐指数
1
解决办法
3211
查看次数

如何通过rails迁移设置Postgres中主键(ID)列的起始点

我正在向使用PostgreSQL作为后端的heroku部署rails应用程序.在我的数据库迁移中,我通常会将报告等内容的ID字段设置为至少1000,大多数客户似乎不喜欢从1开始.

通常我使用mysql,我只是在创建表后添加一个特定的sql:

def self.up
    create_table :reports do |t|
       t.references :something
       ...
    end
    execute("ALTER TABLE reports AUTO_INCREMENT = 1000;")
end
Run Code Online (Sandbox Code Playgroud)

有没有人知道我如何为PostgreSQL实现同样的目标,理想情况下我希望迁移来构建表本身,这不是特定于数据库的.

我想实现我的目标的一个愚蠢的方法是在循环中创建和删除999条记录,哎哟.

sql migration postgresql ruby-on-rails

9
推荐指数
2
解决办法
7729
查看次数

如何在编辑时停止预先填充的密码字段?

我在rails应用程序中一直有这个问题,我仍然需要正确的解决方案.每当用户编辑自己的记录时,都会填充密码字段.我怀疑它的Firefox在编辑操作中设置@ user.password = nil没有帮助.

问题是未填充密码确认,因此由于未匹配而验证失败.

我尝试过以下方法:

<%= f.label :password %>
<%= f.password_field :password, :value => "", :autofill => false, :class => 'max' %>
Run Code Online (Sandbox Code Playgroud)

但那不行.我也试过:autofill => 'off'哪个也行不通.

有人有什么建议吗?谢谢.

forms webforms ruby-on-rails actionview actionviewhelper

8
推荐指数
1
解决办法
7703
查看次数

我应该在rails中创建博客还是使用已经存在的东西?

在我的下一个rails项目中,我将需要博客功能.我想知道是否有人有任何好的建议,或者我应该自己推出?(可能不会在15分钟内)

我认为最重要的功能是优雅地显示代码示例.

blogs ruby-on-rails

7
推荐指数
2
解决办法
2441
查看次数

在处理电子邮件回复时,如何忽略任何电子邮件客户端细节和历史记录?

我有一个rails应用程序,它通过IMAP处理传入的电子邮件.目前,使用一种方法在TMail对象的部分中搜索给定的content_type:

def self.search_parts_for_content_type(parts, content_type = 'text/html')
    parts.each do |part|
      if part.content_type == content_type
        return part.body
      else
        if part.multipart?
          if body = self.search_parts_for_content_type(part.parts, content_type)
            return body
          end
        end
      end
    end

    return false
 end
Run Code Online (Sandbox Code Playgroud)

这些电子邮件通常是对它首先发送的html电子邮件的回应.(原始出站电子邮件永远不会相同.)上述方法返回的正文文本包含电子邮件的完整历史记录,我想解析回复文本.

  1. 我想知道在37信号应用程序中看到的是否在邮件顶部放置一些"---请在这行以上回复---"文本是否合理.

  2. 除了为每个邮件客户端编写大量正则表达式(我还没有尝试过)之外,还有其他方法可以忽略客户端特定的电子邮件添加吗?他们似乎都在自己的位置上发表任何回复.

ruby email parsing ruby-on-rails

6
推荐指数
1
解决办法
2481
查看次数

在RubyOnRails应用程序中生成图形

我想知道其他人发现什么是rails应用程序的最佳图形库/插件/宝石等.

当我说得最好时,我想我的意思是易于实现和自定义图形的能力.

我之前使用过openflashchart2并且喜欢它的整体外观/效果,尽管根据需要定制所有内容有时会很痛苦.您是否有经验或建议让我指向更好的方向?非常感谢.

ruby ruby-on-rails graph

6
推荐指数
1
解决办法
365
查看次数

使用rspec测试ActiveSupport :: Notifications

有谁知道如何规定有效的支持通知?以下似乎不起作用.它会检测默认的rails框架通知,但不会检测我的自定义通知.

it 'sends a "product.search" notification to any subscribers listening'
  ActiveSupport::Notifications.should_receive(:instrument).with("product.search", :search => search) 
  get :search, ...
end
Run Code Online (Sandbox Code Playgroud)

如果我更改规范以检查订户代码的结果(例如,创建数据库记录时记录计数更改),它就会通过.这证实它工作正常.但是,指出订户在这里做什么似乎是错误的,我只想说明通知正在发送.任何想法将不胜感激.

编辑:

这是我正在尝试规范的控制器代码:

ActiveSupport::Notifications.instrument("product.search", :search => 'test')
Run Code Online (Sandbox Code Playgroud)

tdd rspec ruby-on-rails

6
推荐指数
2
解决办法
2131
查看次数

草稿记录应保存在单独的表格中吗?

我们正在建立一个简单的基于网络的系统,有人添加一个记录,例如CMS页面,在网站上显示之前得到负责人的批准.

如果作者随后决定稍后编辑该页面,我们希望基于实时副本创建草稿,在批准后它将替换旧的实时页面.

我们考虑过进行完整的版本控制,但相信我们可以通过以下方式保持这种简单:只需一个草稿,2.只是一个现场,或者3.一个草稿和一个现场.

跨多个"事物"而不仅仅是页面需要此功能.

最后一个问题:你认为将这两个记录存储在同一个表中会更好,还是镜像表会更好?

我想这可能取决于但我不喜欢有两个具有相同结构的表的理想.稍微慢一点的操作(因为我们必须在显示数据时一直查询草稿)是值得的吗?

database-design web-applications ruby-on-rails application-design

4
推荐指数
2
解决办法
935
查看次数

Ruby专家:您能帮助/建议改进这一系列的ruby代码吗?

在拆分制表符分隔文件后,我在字符串变量中有我需要的值.不幸的是,这个文件的来源不受我的控制.

以下是值可能包含的三个确切示例:

  1. "5.344"
  2. "-2.345"
  3. "-.977"

注意空格,小数点前面没有'0',双引号在字符串中.一旦我在我的字段变量中有每个变量,这就是我目前正在做的事情:

int_val = BigDecimal(value_as_string.gsub(/-\./,"-0.").gsub(/\"/,'').strip).round(0).to_i
Run Code Online (Sandbox Code Playgroud)

我需要将每个四舍五入到最接近的整数(.to_i向下舍入).任何更好的想法将非常感激,因为我可以帮助,但这很臭!?

ruby string

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