小编Dev*_*vin的帖子

Rails 3中特定于环境的路由

我想在routes.rb文件中创建一个范围,以便在生产环境中仅路由某些URL.你如何使用Rails 3路由的条件?我需要做的就是基于Rails.env.production?真实来限制这些规则,但我不确定语法.

routing ruby-on-rails ruby-on-rails-3

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

Heroku上Rails应用程序中的随机超时异常

我在Heroku上托管了一个Rails 3.2应用程序,每天在Rails应用程序中获得2-3次超时.这些不是 H12请求超时,而是在Rails堆栈中某处发生的超时.因此,它们实际上会在网站上生成异常并显示在我的Airbrake日志中.

超时发生似乎是完全随机的; 有时它在Formtastic之类的宝石中,或在HAML视图中,或在ActiveRecord代码中.你可以在这里看到一些回溯的例子:https://gist.github.com/dpmccabe/5238273

这个站点没有太多流量,并且在两个动态游戏中运行良好(尽管由于Adept Scale附加组件它们会自动扩展).HTTP_X_HEROKU_QUEUE_WAIT_TIME标头通常是低或零,所以我不认为这是一个路由问题.我甚至尝试从Thin切换到Unicorn没有效果(我的unicorn.rb显示在上面的要点).

这些超时异常似乎在整个应用程序中随机发生的事实并没有让我继续下去.我确实有New Relic,但我不确定如何调试这个.有任何想法吗?

timeout ruby-on-rails heroku

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

用doMC替换并联plyr

考虑data.frame上的标准分组操作:

library(plyr)
library(doMC)
library(MASS) # for example

nc <- 12
registerDoMC(nc)

d <- data.frame(x = c("data", "more data"), g = c("group1", "group2"))
y <- "some global object"

res <- ddply(d, .(g), function(d_group) {
   # slow, complicated operations on d_group
}, .parallel = FALSE)
Run Code Online (Sandbox Code Playgroud)

通过简单地编写.parallel = TRUE来利用多核设置是微不足道的.这是我最喜欢的plyr功能之一.

但是,随着plyr被弃用(我认为)并且基本上被dplyr,purrr等取代,并行处理的解决方案变得更加冗长:

library(dplyr)
library(multidplyr)
library(parallel)
library(MASS) # for example

nc <- 12

d <- tibble(x = c("data", "more data"), g = c("group1", "group2"))
y <- "some global object"

cl <- create_cluster(nc)
set_default_cluster(cl)
cluster_library(cl, …
Run Code Online (Sandbox Code Playgroud)

r plyr dplyr tidyverse multidplyr

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

无法使用Capistrano和RVM部署Rails应用程序

我有一个我用Capistrano部署的Rails应用程序.我在服务器上安装了RVM,因为我想使用更新版本的Ruby并将其添加到我的deploy.rb文件中(根据我发现的各种说明):

$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require 'rvm/capistrano'
set :rvm_ruby_string, '1.9.2'
set :rvm_type, :user
Run Code Online (Sandbox Code Playgroud)

当我跑步时cap deploy,会发生这种情况:

    [staging.example.com] executing command
 ** [out :: staging.example.com] /usr/local/lib/site_ruby/1.8/rubygems.rb:779:in `report_activate_error': Could not find RubyGem bundler (>= 0) (
 ** [out :: staging.example.com] Gem::LoadError)
 ** [out :: staging.example.com] from /usr/local/lib/site_ruby/1.8/rubygems.rb:214:in `activate'
 ** [out :: staging.example.com] from /usr/local/lib/site_ruby/1.8/rubygems.rb:1082:in `gem'
 ** [out :: staging.example.com] from /usr/bin/bundle:18
    command finished in 801ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/example/staging.example.com/releases/20110714180125; true"
    servers: ["staging.example.com"]
    [staging.example.com] executing command
    command finished in 895ms …
Run Code Online (Sandbox Code Playgroud)

ruby capistrano ruby-on-rails rvm ruby-on-rails-3

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

d3 力网络中的水平链接标签

我有一个带有弯曲链接的 d3 (v3) 力网络,如下所示:

在此处输入图片说明

我想要完成的是让链接的textPath元素是水平的,因为它们是数字,并且“81”需要看起来与“18”不同。我也希望有某种白色阴影/外发光/背景,因为我将它们直接放在链接上。我现在有一个白色的笔画,但它的效果不太好,因为有时一个数字的笔画会侵入它旁边的数字。

这里有一个可重复的例子,我承认它是从其他 SO 答案拼凑而成的:https : //jsfiddle.net/2gbekL7m/

代码的相关部分是:

var link_label = svg.selectAll(".link_label")
  .data(links)
  .enter()
  .append("text")
  .attr("class", "link_label")
  .attr("paint-order", "stroke")
  .attr("stroke", "white")
  .attr("stroke-width", 4)
  .attr("stroke-opacity", 1)
  .attr("stroke-linecap", "butt")
  .attr("stroke-linejoin", "miter")
  .style("fill", "black")
  .attr("dy", 5)
  .append("textPath")
  .attr("startOffset", "50%")
  .attr("xlink:href", function(d, i) {
    return "#link_" + i;
  })
  .text(function(d, i) {
    return d.n;
  });
Run Code Online (Sandbox Code Playgroud)

有谁知道如何通过固定方向和添加背景框来提高链接标签的可读性?

javascript d3.js force-layout

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

用R的pool包重新连接到PostgreSQL数据库

我有一个用R plumber构建的API ,它使用RPostgreSQLpool连接到PostgreSQL数据库(尽管如果我使用的是Shiny应用程序,这也适用):

# create the connection pool
pool <- dbPool(
  drv = PostgreSQL(),
  host = Sys.getenv("DB_HOST"),
  port = 5432,
  dbname = "db",
  user = Sys.getenv("DB_USER"),
  password = Sys.getenv("DB_PASSWORD")
)

# start the API
pr <- plumb("plumber.R")

# on stop, close the pool
pr$registerHooks(
  list("exit" = function() { poolClose(pool) })
)
Run Code Online (Sandbox Code Playgroud)

我想每天导入新数据。最简单的方法是创建一个新数据库并将其推广到生产环境:

CREATE DATABASE db_new;
-- create the tables
-- bulk-insert the data
SELECT pg_terminate_backend (pid) FROM pg_stat_activity WHERE datname = 'db';
DROP DATABASE db; …
Run Code Online (Sandbox Code Playgroud)

postgresql r rpostgresql r-dbi plumber

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

在AJAX表单提交后,Rails 3应用程序不会重定向

我有一个Authlogic登录表单,:remote => true如果用户/密码无效,它会使用RJS模板进行一些内联​​验证.这工作得很好,但是当凭证有效的,它不正确别处重定向.

这是响应表单输入的控制器:

class UserSessionsController < ApplicationController
  respond_to :html, :js

  before_filter :require_no_user, :only => [:new, :create]
  before_filter :require_user, :only => :destroy

  def new
    @user_session = UserSession.new
  end

  def create
    @user_session = UserSession.new(params[:user_session])

    respond_to do |format|
      if @user_session.save     
        flash[:notice] = "Login successful!"
        format.html { redirect_to account_url }
      else
        format.js
      end
    end
  end

  def destroy
    current_user_session.destroy
    flash[:notice] = "Logout successful!"
    redirect_to root_path
  end

end
Run Code Online (Sandbox Code Playgroud)

format.js部分有效但如果用户/密码良好(format.html),则没有任何反应.但是,如果我查看development.log,它请求account_url页面.它不会在浏览器中重定向您.我认为它通过AJAX返回帐户页面,我真的只想要一个正常的重定向.

表单的HTML是这样的:

<%= simple_form_for(
:user_session, @user_session, 
:url …
Run Code Online (Sandbox Code Playgroud)

ajax ruby-on-rails authlogic ruby-on-rails-3

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