小编Siv*_*iva的帖子

Ruby如何写入Tempfile

我正在尝试创建一个Tempfile并将一些文本写入其中.但是我在rails控制台中遇到了这种奇怪的行为

t = Tempfile.new("test_temp") # => #<File:/tmp/test_temp20130805-28300-1u5g9dv-0>
t << "Test data"              # => #<File:/tmp/test_temp20130805-28300-1u5g9dv-0>
t.write("test data")          # => 9
IO.read t.path                # => ""
Run Code Online (Sandbox Code Playgroud)

我也试过,cat /tmp/test_temp20130805-28300-1u5g9dv-0但文件是空的

我错过了什么吗?或者写什么是正确的方法Tempfile

仅供参考我使用的是ruby 1.8.7和rails 2.3.12

ruby file-io ruby-on-rails

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

Rails Scope返回all而不是nil

我遇到了一个奇怪的问题,即创建一个范围并使用firstfinder.似乎first在作用域中使用作为查询的一部分将使其在未找到结果的情况下返回所有结果.如果找到任何结果,它将正确返回第一个结果.

我已经设置了一个非常简单的测试来证明这一点:

class Activity::MediaGroup < ActiveRecord::Base
  scope :test_fail, -> { where('1 = 0').first }
  scope :test_pass, -> { where('1 = 1').first }
end
Run Code Online (Sandbox Code Playgroud)

注意这个测试,我已经设置了匹配记录的条件.实际上,我根据实际情况进行查询,并获得相同的奇怪行为.

以下是失败范围的结果.正如您所看到的,它会生成正确的查询,但没有结果,因此它会查询所有匹配的记录并返回:

irb(main):001:0> Activity::MediaGroup.test_fail
  Activity::MediaGroup Load (0.0ms)  SELECT "activity_media_groups".* FROM "activity_media_groups" WHERE (1 = 0) ORDER BY "activity_media_groups"."id" ASC LIMIT 1
  Activity::MediaGroup Load (0.0ms)  SELECT "activity_media_groups".* FROM "activity_media_groups"
=> #<ActiveRecord::Relation [#<Activity::MediaGroup id: 1, created_at: "2014-01-06 01:00:06", updated_at: "2014-01-06 01:00:06", user_id: 1>, #<Activity::MediaGroup id: 2, created_at: "2014-01-06 01:11:06", updated_at: "2014-01-06 01:11:06", user_id: 1>, #<Activity::MediaGroup …
Run Code Online (Sandbox Code Playgroud)

activerecord scope ruby-on-rails

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

Rails - 检查对象是否为ActiveRecord

我有一个对象数组如何检查其中任何一个是否是ActiveRecord?

activerecord ruby-on-rails ruby-on-rails-3

16
推荐指数
2
解决办法
8934
查看次数

Rails - 如何强制关联使用别名表名

p = Patient.find(30)

p.patient_problems
Run Code Online (Sandbox Code Playgroud)

上面的代码生成以下查询

SELECT `patient_problem`.* FROM `patient_problem` WHERE `patient_problem`.`patient_id` = 30 AND (`patient_problem`.`record_status_id` = 1)
Run Code Online (Sandbox Code Playgroud)

但有没有办法分配/使用别名table_name之类的

p.patient_problems(:alias=>'p1') # just for Ex.. This code will not work
p.patient_problems(:alias=>'p2') # just for Ex.. This code will not work
Run Code Online (Sandbox Code Playgroud)

因此它将生成以下查询

SELECT `p1`.* FROM `patient_problem` AS `p1` WHERE `p1`.`patient_id` = 30 AND (`p1`.`record_status_id` = 1)

SELECT `p2`.* FROM `patient_problem` AS `p2` WHERE `p2`.`patient_id` = 30 AND (`p2`.`record_status_id` = 1)
Run Code Online (Sandbox Code Playgroud)

附加信息

我的问题是当我尝试使用连接时

p.patient_problems(:所有,:联接=>连接)

我收到这个错误

ActionView::Template::Error (Mysql2::Error: Not unique table/alias: 'patient_problem': SELECT `patient_problem`.* FROM …
Run Code Online (Sandbox Code Playgroud)

mysql activerecord ruby-on-rails

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

暴露nginx作为负载均衡器与Ingress控制器有什么区别?

我知道当我们想要使用单个Load Balancer/public IP公开多个服务/路由时,可以使用Ingress.

现在我想将我的Nginx服务器暴露给公众.我有两个选择

  1. 设置service type as LoadBalancervoila我得到了公共IP
  2. 使用Nginx Ingress Controller

现在我可以使用选项1完成我的工作,何时或为什么我会选择选项2什么是在没有Ingress的情况下使用Ingress的nginx的优势?

kubernetes kubernetes-ingress

8
推荐指数
2
解决办法
3823
查看次数

Java - 重复的函数调用减少了执行时间

我有以下代码

public class BenchMark {
    public static void main(String args[]) {
        doLinear();

        doLinear();

        doLinear();

        doLinear();

    }


    private static void doParallel() {
        IntStream range = IntStream.range(1, 6).parallel();

        long startTime = System.nanoTime();
        int reduce = range
                .reduce((a, item) -> a * item).getAsInt();
        long endTime = System.nanoTime();
        System.out.println("parallel: " +reduce + " -- Time: " + (endTime - startTime));
    }

    private static void doLinear() {
        IntStream range = IntStream.range(1, 6);

        long startTime = System.nanoTime();
        int reduce = range
                .reduce((a, item) -> a * …
Run Code Online (Sandbox Code Playgroud)

performance jvm java-8 java-stream

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

backbone.js如何在模型中创建静态方法?

例如,我有以下代码

var myModel = Backbone.Model.extend({
    foo: function(){
       console.log('in foo..')
    }
});
Run Code Online (Sandbox Code Playgroud)

foo如果我实例化myModel但是有没有办法在没有实例化的情况下访问它,这个方法有效吗?

backbone.js

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

Ruby Array - 使用next和before元素进行反向迭代

如何使用当前元素的next和before元素反向迭代一个数组?

是否有可能使用each_consreverse_each

ruby arrays

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

通过 VPC 连接到 Google Cloud SQL?

我在 GCP 中有两个使用 Cloud SQL 和 GKE 的项目

Project A
  -> Cloud SQL
Project B
  -> GKE Cluster
Run Code Online (Sandbox Code Playgroud)

现在我想从 GKE 集群访问 Cloud SQL,对此我有两个选择。

 1. IPv4 address to connect
 2. Clous SQL Proxy as sidecar
Run Code Online (Sandbox Code Playgroud)

但问题是它们都是通过公共IP连接的。我担心延迟,所以我在想我们可以通过 VPC 访问吗?或者某种内部网络?所以读/写会更快。

vpc google-cloud-platform google-kubernetes-engine

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

如何删除$(document).on点击事件?

这是添加事件的代码

   $(document).on({
      click: function() {
        $(this).hide();
        $('#form_name').removeClass('hide');
        $('#form_template_name')
          .attr('placeholder', $(this).text())
          .focus();
      }         
    }, '.form-template-name');
Run Code Online (Sandbox Code Playgroud)

对于某些情况,我不希望触发此事件.所以我尝试的是

$('.form-template-name').off();
$('.form-template-name').unbind();
Run Code Online (Sandbox Code Playgroud)

但似乎没有任何效果.我错过了什么吗?

javascript jquery

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