我正在学习VIM for Rails开发,并希望轻松导航文件中的方法.到目前为止,我看到几个选项:
通过使用找到'def'
/def<space>
Run Code Online (Sandbox Code Playgroud)有没有更好的想法?
我正在使用http://www.trirand.com/jqgrid/jqgrid.html上提供的jqGrid ,我无法找到一种方法来禁用标题右上角的展开/折叠按钮.任何人都知道有没有选择这样做?
我想删除用红色圈出的东西: alt text http://img263.imageshack.us/img263/2008/33702108.png
我试图在ActiveRecord模型中序列化一个简单的属性,而Rails 2.3.4不喜欢它.
class Shopper
serialize :tags
end
>> a = Shopper.new
=> <#Shopper...>
>>a.tags = ['aoeu','stnh']
=> ['aoeu','snth']
>> a.save
=> TypeError: class or module required
Run Code Online (Sandbox Code Playgroud)
有谁知道我错过了什么?
鉴于我有一条命名路线:
map.some_route '/some_routes/:id', :controller => 'some', :action => 'other'
Run Code Online (Sandbox Code Playgroud)
如何使用路由规范文件'spec/routing/some_routing_spec.rb'来测试该命名路由?
我在"描述SomeRouteController"块之后尝试了这个并且它不起作用,我得到'undefined method'helper":
describe SomeRouteHelper, 'some routes named routes' do
it 'should recognize some_route' do
helper.some_route_path(23).should == '/some_routes/23'
end
end
Run Code Online (Sandbox Code Playgroud) 是否有任何Ruby gems /库可以帮助您从旧的DB结构迁移到新的结构?ActiveRecord迁移在跟踪新的数据库结构方面做得很好,但我想知道是否有什么可以帮助您将整个遗留数据库迁移到新结构:
transfer_from(:source_table => 'person', :destination_table => 'dudes_and_dudets') do
from :name, :to => :full_name
from :dob, :to => :age do |dob| # this would, for example, load the result
(Date.today - dob)/60/60/24/365 # of the block into :age
end
end
Run Code Online (Sandbox Code Playgroud)
(我意识到你可以像使用AR一样轻松地进行这些变换,但我希望魔术库可以有更多的变换.
伯恩斯
我们必须使用delayed_job(或其他一些后台作业处理器)在后台运行作业,但我们不允许更改服务器上的启动脚本/启动级别.这意味着如果提供程序重新启动服务器,则不保证守护程序仍然可用(因为守护程序将由每个部署仅运行一次的capistrano配方启动).
目前,我能够想到确保delayed_job守护程序始终运行的最佳方法是向我们的Rails应用程序添加初始化程序,以检查守护程序是否正在运行.如果它没有运行,那么初始化器启动守护进程,否则,它就会离开它.
因此,问题是我们如何检测到Delayed_Job守护程序是从脚本内部运行的?(我们应该能够相当容易地启动一个守护进程,我不知道如何检测一个守护进程是否已经激活).
有人有主意吗?
此致,伯尼
基于下面的答案,这就是我提出的.只需将它放在config/initializers中就可以了:
#config/initializers/delayed_job.rb
DELAYED_JOB_PID_PATH = "#{Rails.root}/tmp/pids/delayed_job.pid"
def start_delayed_job
Thread.new do
`ruby script/delayed_job start`
end
end
def process_is_dead?
begin
pid = File.read(DELAYED_JOB_PID_PATH).strip
Process.kill(0, pid.to_i)
false
rescue
true
end
end
if !File.exist?(DELAYED_JOB_PID_PATH) && process_is_dead?
start_delayed_job
end
Run Code Online (Sandbox Code Playgroud) ruby ruby-on-rails background-process ruby-on-rails-plugins delayed-job
大脑有点油炸....如何得到:控制器的哈希值:来自relative_path的动作?
这基本上与url_for相反.在下面的例子中,"some_function"是我正在寻找的神秘函数名称......我知道它很简单,只是记不住或者似乎无法在文档中找到它.
像这样:
some_function('/posts/1/edit')
=> {:controller => 'posts', :action => 'edit', :id => '1'}
Run Code Online (Sandbox Code Playgroud) 我尝试使用推荐的方式(来自Rails指南)来测试插件中生成的路由,但测试仍然失败.
奇怪的是,如果我在创建路线后重新加载路线(或者我认为),测试失败,但如果我让测试经过一次(例如使用自动测试),那么路线会在后续尝试中被识别.
这是代码:
describe "named route report_with_last_name_smith_path" do
before :all do
Reports::Application.routes.draw do
match "/report_some_report_for_us" => "report#report_some_report_for_us",
:as => :report_some_report_for_us
end
Rails.application.reload_routes! # If I leave this out, then the test
# passes the second time that autotest/autospec
# go through.
end
it "route for every record" do
{:get => '/report_some_report_for_us'}.should route_to(:controller => 'report', :action => 'report_some_report_for_us')
end
end
Run Code Online (Sandbox Code Playgroud)
知道如何让它一直通过吗?
我想找到使用capybara dsl的复选框的第一个实例.谁知道怎么做?
我想也许是这样,但它不起作用:
find('input:first', :type => 'checkbox')
Run Code Online (Sandbox Code Playgroud) 我已经将cucumber.vim文件加载到ftplugin和其他目录的每个指令,但我不明白ftplugin语法足以弄清楚如何获得全部好处.
据我所知,该插件应该能够在步骤定义和功能文件之间跳转,但我无法弄清楚我的映射有什么问题.看起来好像映射应该是通常的ctag map Ctrl +],但这不起作用.
任何想法如何使这些映射工作?
这是插件的链接:
http://github.com/tpope/vim-cucumber/tree/master
Cheerio!
ruby ×8
activerecord ×2
cucumber ×2
routing ×2
rspec ×2
vim ×2
actionpack ×1
capybara ×1
database ×1
delayed-job ×1
javascript ×1
jqgrid ×1
jquery ×1
routes ×1
url-routing ×1