对于我的RubyOnRails-App,我必须在Capistrano部署结束时开始后台工作.为此,我在deploy.rb中尝试了以下内容:
run "nohup #{current_path}/script/runner -e production 'Scheduler.start' &", :pty => true
Run Code Online (Sandbox Code Playgroud)
有时它可以工作,但大多数情况下它不会启动过程(=未在ps -aux中列出).并且没有错误消息.没有nohup.out,不在主目录中,也不在rails app目录中.
我尝试在scheduler.rb而不是nohup中使用trap('SIGHUP','IGNORE'),但结果是一样的.
让它工作的唯一方法是删除":pty => true"并在"cap deploy"结束时执行手动Ctrl-C.但我不喜欢这个......
还有其他机会调用此Scheduler.start吗?或者获取更多错误消息?
我在服务器上使用Rails 2.3.2,Capistrano 2.5.8,Ubuntu Hardy
我无法定义MySQL数据库的触发器.我想在插入新行之前更改文本字段(在给定条件下).这是我尝试过的:
CREATE TRIGGER add_bcc
BEFORE INSERT ON MailQueue
FOR EACH ROW BEGIN
IF (NEW.sHeaders LIKE "%support@mydomain.com%") THEN
SET NEW.sHeaders = NEW.sHeaders + "BCC:internal@mydomain.com";
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
但总是我得到错误"错误的语法".我卡住了,我做错了什么?我正在使用MySQL 5.0.51a-community
顺便说一句:创建一个像这样的空触发器工作正常:
CREATE TRIGGER add_bcc
BEFORE INSERT ON MailQueue
FOR EACH ROW BEGIN
END;
Run Code Online (Sandbox Code Playgroud)
但这也失败了:
CREATE TRIGGER add_bcc
BEFORE INSERT ON MailQueue
FOR EACH ROW BEGIN
IF 1=1 THEN
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
这是我第一次使用stackoverflow.com,所以如果在这里发布内容有帮助我会非常兴奋:-)
将Rails 2应用程序转换为Rails 3,我必须替换gem searchlogic.现在,使用Rails 3.2.8和gem Ransack我想构建一个使用现有范围的搜索表单.例:
class Post < ActiveRecord::Base
scope :year, lambda { |year|
where("posts.date BETWEEN '#{year}-01-01' AND '#{year}-12-31'")
}
end
Run Code Online (Sandbox Code Playgroud)
据我所知,这可以通过定义自定义搜索来实现.可悲的是,我没有找到任何关于此的文档.我在Post课堂上尝试过这个:
ransacker :year,
:formatter => proc {|v|
year(v)
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
Post.ransack(:year_eq => 2012).result.to_sql
=> TypeError: Cannot visit ActiveRecord::Relation
Run Code Online (Sandbox Code Playgroud)
我尝试了ransacker声明的一些变体,但它们都不起作用.我需要一些帮助...
更新:上面的范围只是示例.我正在寻找一种方法来使用Ransack中的每个现有范围.在Ransack的前身MetaSearch中,有一个要求search_methods使用范围的功能.Ransack 尚未支持此开箱即用.
想想一个简单的Rails脚手架应用程序,其中包含一个表单,用于通过"保存"按钮将记录添加到数据库中.在"创建"操作之后,控制器重定向到"显示"操作,用户可以使用"编辑"链接编辑刚刚插入的记录.到目前为止,这么简单.
但是,如果用户在创建记录后使用浏览器的后退按钮返回"新"操作,则浏览器会显示包含用户刚刚输入的值的表单.现在他改变了一些值并再次按下"保存".他认为这会改变记录,但当然这会创造一个新记录.
防止此类重复条目的首选方法是什么?我正在寻找一个通用的解决方案,可能基于cookie或JavaScript.
我想使用Vuetify(v1.0.18)使用v-tabs呈现一些静态导航。路由是在服务器端完成的,所以我需要一种通过属性设置活动选项卡的方法。这是一项非常基本的任务,但我无法使其正常工作。例:
<v-tabs>
<v-tab href="/path1">Tab 1</v-tab>
<v-tab href="/path2">Tab 2</v-tab>
</v-tabs>
Run Code Online (Sandbox Code Playgroud)
这将预选择第一个标签-很好。
现在的问题是:如何预先选择第二个标签?以下就不能正常工作:
<v-tabs value="tab2">
<v-tab id="tab1" href="/path1">Tab 1</v-tab>
<v-tab id="tab2" href="/path2">Tab 2</v-tab>
</v-tabs>
Run Code Online (Sandbox Code Playgroud) 我正在使用Stripe Checkout Beta构建 Rails 应用程序。为此,我Stripe::Checkout::Session在服务器上创建一个,redirectToCheckout在前端使用,然后等待 webhook 传入,类型checkout_beta.session_succeeded告诉我付款已完成。这工作正常,但是:
对于每笔付款,Stripe 都会创建一个新客户 - 这不是我想要的。如果现有客户第二次付款,Stripe 不应创建新客户,新付款应链接到现有客户。
在重定向到 Checkout 之前如何设置客户 ID?
这是我的 Ruby控制器代码:
# app/controllers/payments_controller.rb
def new
@session = Stripe::Checkout::Session.create(
success_url: "https://shop.example.test/success",
cancel_url: "https://shop.example.test/cancelled",
payment_method_types: ["card"],
line_items: cart_items.map do |cart_item|
{
name: cart_item.name,
quantity: 1,
amount: cart_item.name.price.cents,
currency: 'eur'
}
end,
customer_email: current_user.email
)
end
Run Code Online (Sandbox Code Playgroud)
HTML代码(使用 Slim):
# app/views/payments/new.html.slim
= content_tag :div, nil, data: { \
controller: 'stripe',
stripe_public_key: ENV['STRIPE_PUBLIC_KEY'],
stripe_session_id: @session.id } …Run Code Online (Sandbox Code Playgroud) 据我了解,UTC表示时间为时区+00:00。但是Ruby认为有所不同Time#utc?。我在Ruby 2.5.1中观察到了这一点:
a = Time.new(2018,6,13, 9,0,0, '+00:00')
# => 2018-06-13 09:00:00 +0000
b = Time.utc(2018,6,13, 9,0,0)
# => 2018-06-13 09:00:00 UTC
a == b
# => true
a.utc?
# => false (WHY???)
b.utc?
# => true
Run Code Online (Sandbox Code Playgroud)
恕我直言,a.utc?应返回true。有什么解释吗?
另外:来自Time#utc 的Ruby文档?
如果时间表示以UTC(GMT)表示的时间,则返回true 。
“在UTC / GMT中表示时间”到底是什么意思?显然,偏移量0是不够的。
对于类似论坛的应用程序,我需要能够向每个用户显示未读(新)消息.是否有任何Rails插件/ gem用于此目的?
或者:有没有任何提示以有效的方式完成这项工作?我正在考虑一个额外的数据库表,为每个用户存储每条消息的未读状态(或读状态?).但这似乎是蛮力的方法,也许有一个更聪明的解决方案......
祝愿乔治
arel ×1
background ×1
browser ×1
capistrano ×1
controller ×1
crud ×1
mysql ×1
nohup ×1
ransack ×1
ruby ×1
sql ×1
time ×1
triggers ×1
utc ×1
vue.js ×1
vuetify.js ×1