小编tkr*_*car的帖子

Bundler - 加载多个Gemfiles

只是好奇是否有一种从Ruby应用程序加载多个Gemfile的简单方法.

如果你(非常明智地)想知道为什么我会做这么疯狂的事情......

情况是我有一个主服务器(有自己的要求),在实现中,可以从系统上的任意数量的其他路径加载模块,并且每个路径现在都有自己的Gem文件用于由那个模块.

现在我通过编辑服务器的Gemfile来包含任何模块使用的所有宝石,这似乎是有效的,但它肯定是不优雅的.

ruby bundler

20
推荐指数
2
解决办法
6189
查看次数

将Rails 3.0.3更新到3.0.5

我没有任何更新Rails应用程序的经验,当我谷歌它时,它只显示了如何将Rails 2.x更新到3.0.x的复杂方法.所以我的问题有点简单.

到目前为止我试过这个:

  1. 编辑Gemfile并更改为3.0.5
  2. 捆绑安装

然后在相关的gemset中,您会看到所有rails 3.0.5和3.0.3 gems.

  1. 这是通常的方式吗?
  2. 我应该删除所有3.0.3宝石吗?
  3. 有没有更好的方法来更新rails应用程序?

ruby-on-rails

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

Rails - 强制字段大写并唯一验证

机场有四个字母的ICAO代码.按照惯例,它们总是大写的.我正在创建一个用于接收用户输入的表单,但是此表单需要能够以大小写混合的形式接受用户输入,并防止它们创建欺骗.

:uniqueness当然,默认情况下区分大小写.我想出了如何在保存之前将用户的输入转换为大写,但问题是这似乎是后验证,而不是预验证.

例如,如果已经有ICAO的机场KLAX,用户可以输入klax,它将被验证为唯一,然后转换为大写并存储,从而产生重复.

这是我目前的型号代码.

class Airport < ActiveRecord::Base
  validates :icao, :name, :lat, :lon, :presence => true
  validates :icao, :uniqueness => true

  before_save :uppercase_icao

  def uppercase_icao
    icao.upcase!
  end
end
Run Code Online (Sandbox Code Playgroud)

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

10
推荐指数
4
解决办法
9510
查看次数

Rails 3 - 缓存Web服务调用

在我的应用程序中,在主页操作中,我调用返回JSON的特定Web服务.

parsed = JSON.parse(open("http://myservice").read)
@history = parsed['DATA']
Run Code Online (Sandbox Code Playgroud)

这个数据每60秒不会改变一次以上,并且不会在每个访问者的基础上改变,所以我希望,理想情况下,缓存@history变量本身(因为解析不会产生新的结果)并自动使其无效如果它超过一分钟.

我不确定这样做的最好方法.默认的Rails缓存方法似乎都更倾向于需要手动过期的内容.我确信有一种快速简便的方法可以做到这一点,我只是不知道它是什么!

caching web-services ruby-on-rails-3

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

Rails 3:多个has_one关联和种子

我正在使用Rails似乎没有做到的数据概念 - 一条路线有两个(也就是两个)机场.我终于想出了如何对我的外键进行硬编码以使它们变得合情合理.

models/route.rb很简单:

class Route < ActiveRecord::Base
  has_one :airport, :foreign_key => 'from_airport_id', :class_name => 'Airport'
  has_one :airport, :foreign_key => 'to_airport_id', :class_name => 'Airport'
end
Run Code Online (Sandbox Code Playgroud)

这一切似乎工作正常,但我似乎无法正确播种.

seeds.rb看起来像这样:

Airport.delete_all
@kpdx = Airport.create(:icao => 'KPDX', :name => 'Portland International Airport', :lat => '45.58869934', :lon => '-122.5979996')
@ksea = Airport.create(:icao => 'KSEA', :name => 'Seattle Tacoma International Airport', :lat => '47.4490013122559', :lon => '-122.30899810791')
Route.delete_all
Route.create(:from_airport_id => @kpdx, :to_airport_id => @ksea, :route => "RIVR6 BTG OLM6")
Route.create(:from_airport_id => @kpdx, …
Run Code Online (Sandbox Code Playgroud)

seed associations ruby-on-rails-3

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

CakePHP 1.3:测量页面执行时间

想要弄清楚如何衡量CakePHP网站的总PHP执行时间.看起来在1.2中,这在渲染的HTML中作为HTML注释包含在调试模式中,但这不会发生在我的1.3站点上,并且在任何情况下我都希望它作为我可以输出给用户的元素,而不是评论.

我可以使用microtime()在常规PHP中轻松完成此操作,但我不确定在CakePHP中添加代码的位置,我怀疑它可能有更强大的执行计时器.想法?

timer cakephp-1.3

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

Rails POST表单到漂亮的URL

其中一个'我显然做错了'的时刻.感觉就像我正在尝试做一些基本的事情,并与框架作斗争,所以我很有吸引力!

我正在使用Rails 3,并且对于如何创建一个导致页面包含干净URL的搜索表单感到有些困惑.

我的应用程序允许您从任何位置的路线搜索到另一个位置.

例如,有效的URL将是/ routes/A/to/B /或/ routes/B.

我的routes.rb:

match 'routes/:from/to/:to' => 'finder#find', :as => :find
match 'routes/find' => 'finder#find'
Run Code Online (Sandbox Code Playgroud)

我的搜索表单:

<% form_tag('/routes, :method => 'post') do %>
  <%= label_tag(:from, "From:") %>
  <%= text_field_tag(:from) %>
  <%= label_tag(:to, "To:") %>
  <%= text_field_tag(:to) %>
  <%= submit_tag("Go") %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

控制器:

class FinderController < ApplicationController
  def index
  end

  def find
    if params[:from].blank? or params[:to].blank?
      render :action => "invalid_results" and return
    end
    @from = Location.find_by_code(params[:from].upcase)
    @to = Location.find_by_code(params[:to].upcase)
    if @from.nil? or @to.nil?
      render …
Run Code Online (Sandbox Code Playgroud)

routes rails-routing ruby-on-rails-3

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

设计 - 用户登录后运行检查,如果错误则重定向

我正在开发一个电子商务应用程序.当用户登录我的应用程序时,我想检查我的外部订阅处理程序并确保他们的订阅仍处于活动状态且未过期/失败/无论如何.

我成功地想出了如何使用Warden回调initializers/devise.rb来登录后对模型进行检查.但是,如果出现问题,我想再次将其注销并重定向到某个页面,告诉他们下一步该做什么.

这就是我所拥有的.我知道我不能redirect_to从回调中使用.鉴于此,做我正在尝试做的最好的方法是什么?

Warden::Manager.after_authentication do |user, auth, opts|
  begin
    user.check_active_subscription # this works, and will raise one of several exceptions if something is goofy
  rescue
    redirect_to "/account/expired" # obviously this won't work, but see what I'm trying to do?
  end
end
Run Code Online (Sandbox Code Playgroud)

devise warden ruby-on-rails-3

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

PHP在类中定义函数

这里很简单的问题.用PHP做我的第一个OO编程,更习惯于Java和C#.

使用此类定义:

class RouteParser {
    var $DEBUG = 1;

    function parse($from, $to, $route){
        debug("test");
        debug("test again");
    }

    function debug($arg) {
        if($DEBUG) {
            echo "<pre>DEBUG: " . print_r($arg) . "</pre>";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

而这个执行代码:

include("RouteParser.php");
$rp = new RouteParser();
$return = $rp->parse("from","to","test");
Run Code Online (Sandbox Code Playgroud)

我收到错误:

致命错误:在第7行的C:\ xampplite\htdocs\routeparse\RouteParser.php中调用未定义的函数debug()

据我所知,PHP不支持函数原型,所以我很难说如何告诉一个类函数另一个类函数存在...根据我在PHP文档中发现的,这只是一个问题,如果函数在条件内(这是有道理的)......

php oop

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