小编And*_*ndy的帖子

从Realm数据库中检索单个对象的正确方法

我非常喜欢与Swift结合使用Realm(0.92)但是有一个关于从数据库中读取对象的问题.我的目标是使用已知的唯一ID(也恰好是主键)检索单个对象.

所有文档似乎都是针对多个对象的查询,然后对这些对象进行过滤.在这种情况下,我知道对象ID,因为它已知是唯一的,所以想直接检索它.

我目前的做法如下:

Realm().objects(Book).filter("id == %@", prevBook.nextID).first
Run Code Online (Sandbox Code Playgroud)

这看起来很严厉.以前版本的文档表明有更直接的方法,但我似乎无法在文档中找到它.

我当前的方法的问题是它崩溃了以下函数的异常:

public func filter(predicateFormat: String, _ args: CVarArgType...) -> Results<T>
Run Code Online (Sandbox Code Playgroud)

神奇地报告了例外情况:

EXC_BAD_ACCESS(代码= 1,地址= 0xedf)

任何建议都非常欢迎.

预计一行提问:我已经确认用已知的好ID替换prevBook.nextID并不能解决问题

database realm swift

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

尝试在Ruby on Rails中打开URL时出错

环境:Ruby 1.9.2,Rails 3.0.3,Ubuntu

当我尝试使用以下命令打开URL时:

open("http://www.cnn.com")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Errno::ENOENT: No such file or directory - http://www.cnn.com
    from (irb):9:in `initialize'
    from (irb):9:in `open'
    from (irb):9
Run Code Online (Sandbox Code Playgroud)

(这是一个难以搜索的主题).这在irb和我的应用程序中都会发生.它曾经在Ruby 1.8.7和Rails 2.3.4下工作,但似乎有些东西发生了变化.

url ruby-on-rails

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

使用Docker Compose时设置Rails/Rack环境

我有一个docker-compose环境如下:

web:
build: .
environment:
  - RAILS_ENV=development
  - RACK_ENV=development
  - DOCKERIZED=true
env_file: 
  - .env
ports:
  - "3000:3000"
volumes:
  - .:/usr/app    
links:
  - redis
  - db
  - search
  - memcache
networks:
  - front-tier
  - back-tier
command: bundle exec rails s -p 3000 -b '0.0.0.0'
Run Code Online (Sandbox Code Playgroud)

在我的.env文件中,我有以下内容:

RAILS_ENV=development
RACK_ENV=development
Run Code Online (Sandbox Code Playgroud)

问题是当我尝试使用数据库种子时

docker-compose run web bundle exec rake db:setup RAILS_ENV=development
Run Code Online (Sandbox Code Playgroud)

播种数据库时,日志中"Rails.env"的输出为"production".我跑的时候

docker-compose run web env
Run Code Online (Sandbox Code Playgroud)

它获得以下环境变量:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=b6fcc864cf45
TERM=xterm
DOCKERIZED=true
RACK_ENV=development
RAILS_ENV=development
Run Code Online (Sandbox Code Playgroud)

但是,当我运行以下命令时:

docker-compose run web rails r "print Rails.env"
Run Code Online (Sandbox Code Playgroud)

我明白了:

> production …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails docker

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

几推之后,Git Push就会挂起

我启动Ubuntu Linux,打开一个终端,编辑一些代码,并愉快地执行

git push origin master
Run Code Online (Sandbox Code Playgroud)

但是,经过一段时间(有时30分钟,有时几个小时),完全相同的命令将挂起(根本没有输出).

当我尝试

ssh -v git@github.com
Run Code Online (Sandbox Code Playgroud)

我收到以下回复:

OpenSSH_5.8p1 Debian-1ubuntu3, OpenSSL 0.9.8o 01 Jun 2010
debug1: Reading configuration data /home/avitus/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: auto-mux: Trying existing master
Run Code Online (Sandbox Code Playgroud)

然后它再次挂起.一旦我将SSH连接到另一台服务器,似乎我再也不能使用SSH来git了.任何想法如何解决这一问题?这让我不得不每次重启.

更新:

当我从〜/ .ssh/config中删除以下两行(旨在促进连接共享)时,问题就消失了

ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
Run Code Online (Sandbox Code Playgroud)

git ssh github

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

Rails.cache.fetch插入额外的值

我们有一个页面显示了我们应用程序的前几组。排行榜的计算成本很高,因此我们将结果缓存一个小时,如下所示:

@groupboard = Rails.cache.fetch("top_groups", :expires_in => 1.hour) do  
  Group.top_groups
end
Run Code Online (Sandbox Code Playgroud)

第一次写入缓存后,这给出了错误。在控制台中四处查看,我看到Group.top_groups返回了一系列如下所示的项目:

[#<Group id: 4, name: "IBP", rank: 6, users_count: 13, leader_id: 4662>, 3887]
Run Code Online (Sandbox Code Playgroud)

当我查看从缓存返回的结果时,它看起来如下:

[#<Group id: 4, name: "IBP", rank: 6, users_count: 13, leader_id: 4662>, :@new_record_before_save], false, 3887]
Run Code Online (Sandbox Code Playgroud)

有谁知道会导致@new_record_before_save和'false'值插入缓存中该对象的所有条目的原因是什么?

我们正在使用Dalli,Memcached 1.4.9,Rails 3.2.4,Ruby 1.9.2

memcached ruby-on-rails-3 dalli

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

如何根据Rails 3.0.x中的表单选项指定响应格式

环境:Rails 3.0.4和Ruby 1.9.2

我有以下表格:

<%= form_tag( {:action => 'show', :format => :pdf}, :method => :post) do %>

.. list of items ...

<%= submit_tag "Show", :onclick => "return checkAllFields(4);", :remote => true %> 

<select name="format">
    <option name="HTML">HTML</option>
    <option name="PDF">PDF</option>
</select>) 

<% end %>
Run Code Online (Sandbox Code Playgroud)

如您所见,我已在URL中将格式指定为"pdf".我想要的是根据select选项从控制器请求HTML或PDF响应.这两个查询都是单独工作的,即我可以渲染HTML或PDF但不能使其成为动态用户选择.(我甚至无法使用两个单独的硬编码按钮)

控制器代码很明显

def show
  # code to locate items here

  respond_to do |format|
    format.html
    format.pdf { render :layout => false }
      prawnto :filename => "list.pdf", :prawn => { }
  end 
end
Run Code Online (Sandbox Code Playgroud)

webforms ruby-on-rails prawn prawnto ruby-on-rails-3

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

Rails 3.1替换RXML模板生成器

在Rails 3.1中处理自定义XML响应的正确方法是什么?

在Rails 2中,我在我的控制器中执行了以下操作:

# GET the blog as a feed
def feed
  @blog = Blog.find(:first, :id => params[:id]])

  @blog_id = @blog.id
  @blog_posts = BlogPost.find(:all, :conditions => ["blog_id = ? AND is_complete = ?", @blog_id, true], :order => "blog_posts.created_at DESC", :limit => 15)
  render :action => :feed, :layout => false
end
Run Code Online (Sandbox Code Playgroud)

然后是视图中的RXML构建器模板'feed.rxml':

xml.instruct! :xml, :version=>"1.0"
xml.rss(:version=>"2.0") {
xml.channel {
    xml.title(@blog.title)  
    xml.link(url_for(:only_path => false))

    xml.description(@blog.subtitle)  
    xml.language('en-us')  
    for blog_post in @blog_posts
        xml.item do  
            xml.title(blog_post.title || '')  
            xml.link(blog_named_link(blog_post))
            xml.description(blog_post.body)  
            xml.tag(blog_post.tag_string)  
            xml.posted_by(blog_post.posted_by.name)  
        end  
     end …
Run Code Online (Sandbox Code Playgroud)

xml view ruby-on-rails-3

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

Passenger&Nginx => 502生产中的错误网关错误

我正在运行Nginx 1.0.6,Passenger 3.0.9,Rails 3.1.1,Ruby 1.9.在我的生产环境中,我在nginx_error.log文件中看到以下间歇性警告:

2011/11/22 14:44:40 [warn] 23288#0:*474上游响应被缓冲到临时文件/ opt/nginx/proxy_temp/2/00/0000000002,同时读取上游,客户端:69.172.88.178,服务器:www.memverse.com,请求:"GET/show_all_my_verses HTTP/1.1",上游:"passenger:unix:/ passenger_helper_server:",主持人:"www.memverse.com",推荐人:" http:// www. memverse.com/quick_add/7352 "

并且,不太常见的是,导致502 Bad Gateway的以下错误:

2011/11/21 15:35:20 [错误] 2118#0:*60762上游过早关闭连接,同时从上游读取响应头,客户端:74.125.44.84,服务器:www.memverse.com,请求:"GET/blogs /饲料/ 9 HTTP/1.1" ,上游: "乘客:UNIX:/ passenger_helper_server:",主机: "www.memverse.com"

我已经浏览了Passenger和Nginx文档并调整了我的nginx.conf文件中的几乎所有设置,但都无济于事.我希望有人能够至少指出我正确的方向.

下面是我的nginx.conf:

user  root;
worker_processes  4;

error_log  logs/error.log  error; # debug | info | notice | warn | error | crit
pid        logs/nginx.pid;

events {
    worker_connections  1024; # max_clients = worker_processes * worker_connections
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails passenger nginx ruby-on-rails-3 ruby-on-rails-3.1

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