在我们的登台服务器上,我们在生产环境中运行Rails应用程序,以便尽可能与我们的生产服务器相似.我们正在使用何时创建我们的crontab.但是,我们需要为我们的站点地图生成运行稍微不同的rake任务,因此它不会ping Google和Bing.
在deploy.rb中,我们有:
set :stages, %w(production staging)
,但是在deploy/staging.rb和deploy/production.rb中我们都:rails_env, "production"
设置了,所以我无法使用Rails.env
.
在schedule.rb
,我想做的事情如下:
every :day, at: '1am' do
if @stage == 'production'
rake 'sitemap:refresh'
else
rake 'sitemap:refresh:no_ping'
end
end
Run Code Online (Sandbox Code Playgroud)
如何使该变量可用?
更新
我能够通过推杆解决它
set :whenever_variables, defer { "stage=#{stage}" }
进入我的deploy/staging.rb.然后我可以访问@stage
schedule.rb
我正在尝试通过rails项目创建我的第一个cron作业.运行时cap deploy
,我收到此错误:
...
* 2013-01-01 22:29:00 executing `whenever:update_crontab'
* executing "cd /var/www/vhosts/famnfo.com/releases/20130102042834 && bundle exec whenever --update-crontab FamNFo --set environment=production --roles db"
servers: ["famnfo.com"]
[famnfo.com] executing command
** [out :: famnfo.com] /var/www/vhosts/famnfo.com/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/core_ext/numeric/time.rb:49:in `days': wrong number of arguments (1 for 0) (ArgumentError)
** [out :: famnfo.com] from config/schedule.rb:23:in `initialize'
** [out :: famnfo.com] from /var/www/vhosts/famnfo.com/shared/bundle/ruby/1.9.1/gems/whenever-0.8.1/lib/whenever/job_list.rb:25:in `instance_eval'
** [out :: famnfo.com] from /var/www/vhosts/famnfo.com/shared/bundle/ruby/1.9.1/gems/whenever-0.8.1/lib/whenever/job_list.rb:25:in `initialize'
** [out :: famnfo.com] from /var/www/vhosts/famnfo.com/shared/bundle/ruby/1.9.1/gems/whenever-0.8.1/lib/whenever.rb:15:in `new'
** [out :: famnfo.com] from /var/www/vhosts/famnfo.com/shared/bundle/ruby/1.9.1/gems/whenever-0.8.1/lib/whenever.rb:15:in `cron'
** [out …
Run Code Online (Sandbox Code Playgroud) cron ruby-on-rails whenever ruby-on-rails-3 whenever-capistrano
我正在尝试使用kaminari和jquery创建一个不错的无尽分页,我已经看过关于这种主题的教程,但它是用will_paginate和jquery完成的.这次我希望能够用kaminari宝石做到这一点.这里有任何帮助.谢谢
我有一个简单的应用程序,在数据库和"多对多"关系中有3个表.
# Model Employee
class Employee < ActiveRecord::Base
has_and_belongs_to_many :phonenumbers
accepts_nested_attributes_for :phonenumbers, :allow_destroy => true
attr_accessible :last_name, :first_name, :middle_name, :phonenumbers_attributes
end
# Model Phonenumber
class Phonenumber < ActiveRecord::Base
has_and_belongs_to_many :employees
attr_accessible :number
accepts_nested_attributes_for :employees
end
Run Code Online (Sandbox Code Playgroud)
我有'employees_phonenumbers'连接表与'employee_id'和'phonenumber_id'列.
# View
<%= form_for @employee, :url => { :action => :create } do |f| %>
<%= f.label "Last name" %>
<%= f.text_field :last_name %>
<%= f.label "First name" %>
<%= f.text_field :first_name %>
<%= f.label "Middle name" %>
<%= f.text_field :middle_name %>
<%= f.fields_for …
Run Code Online (Sandbox Code Playgroud) 我试图在右侧放置一张桌子但是得到了
undefined method 'position='
Run Code Online (Sandbox Code Playgroud)
这是我的示例代码:
table data , position: :right do
rows(0).font_style = :bold
cells.style :align => :right
cells.borders = []
end
Run Code Online (Sandbox Code Playgroud)
但按照上面的代码文件 http://prawn.majesticseacreature.com/manual.pdf应运行代码.问题出在哪儿?
我正在尝试部署一个随时使用的项目.
但得到:
sh: whenever: not found
rolling back
executing "rm -rf /var/www/rails_apps/portal/releases/20130627122943; true"
failed: "sh -c 'cd /var/www/rails_apps/portal/releases/20130627122943 && whenever --update-crontab iconnect_portal --set environment=production --roles db'" on ...
Run Code Online (Sandbox Code Playgroud)
gem 'whenever', :require => false
Run Code Online (Sandbox Code Playgroud)
require "bundler/capistrano"
require 'capistrano/ext/multistage'
require "whenever/capistrano"
require "delayed/recipes"
........
Run Code Online (Sandbox Code Playgroud)
问题出在哪儿?
说 Object embeds_many searched_items
这是文件:
{"_id": { "$oid" : "5320028b6d756e1981460000" },
"searched_items": [
{
"_id": { "$oid" : "5320028b6d756e1981470000" },
"hotel_id": 127,
"room_info": [
{
"price": 10,
"amenity_ids": [
1,
2
]
},
{
"price": 160,
"amenity_ids": null
}
]
},
{
"_id": { "$oid" : "5320028b6d756e1981480000" },
"hotel_id": 161,
"room_info": [
{
"price": 400,
"amenity_ids": [4,5]
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想找到具有room_info.amenity_ids
IN [2,3] 的"searching_items" .
我试过了
object.searched_items.where('room_info.amenity_ids' => [2, 3])
object.searched_items.where('room_info.amenity_ids' =>{'$in' => [2,3]}
没有运气
在rails应用程序中,我有一个创建产品页面,其中包含一个嵌套的照片表单.有验证确保总有照片存在.但是,当我尝试在没有照片的情况下提交表单时,产品表单会在没有照片输入字段的情况下重新呈现.
新产品页面haml
= form_for @product,:url => products_path, :html => { :multipart => true } do |f|
- if @product.errors.any?
.error_messages
%h2 Form is invalid
%ul
- for message in @product.errors.full_messages
%li
= message
- if @photo.errors.any?
.error_messages
%h2 Image is invalid
%ul
- for message in @photo.errors.full_messages
%li
= message
%p
= f.label :description
= f.text_field :description
%p
= f.fields_for :photos do |fp|
=fp.file_field :image
%br
%p.button
= f.submit
Run Code Online (Sandbox Code Playgroud)
产品控制器
class ProductsController < ApplicationController
def new …
Run Code Online (Sandbox Code Playgroud) whenever ×3
capistrano ×2
activerecord ×1
cron ×1
forms ×1
jquery ×1
kaminari ×1
mongodb ×1
mongoid ×1
pagination ×1
prawn ×1
ruby ×1
validation ×1