有人知道如何从现有的XML模式(XSD文件)生成JSON模式吗?有没有可用的工具?
我们正在对当前系统进行概述,试图弄清楚我们是否可以提高性能和可靠性.
目前我们运行一堆内部Rails应用程序和基于Rails的网站.有些已经是Rails 3,有些正在转换为Rails 3.它们都连接到以下MySQL安装程序.
mysql01 ( master server) => mysql02 (slave) =>(每日数据库备份到驱动器,每天,每周,每月和每半年备份).
所有写入都发生在mysql01上,大多数短读取也会发生,一些"更耗资源的读取"(如每月/每周报告需要3-10分钟才能运行并将数据转储到csv或备份中)转到mysql02服务器.我们每天访问我们的网站大约3-5K,并且有大约20-30个内部用户,每天使用各种应用程序进行库存,订单处理等.因此,除了那些报告之外,这些服务器并不是特别重负荷.无论如何,奴隶的奔跑.
所有服务器都在virtualized XENDebian Lenny VM上的池中运行.
所以我们正在对系统进行审查,有人提出了切换到MySQL Cluster (NDB)设置的建议.我在理论上知道它,但从未实际运行它.任何有过这方面经验的人都知道任何赞成与我们当前的设置,以及涉及Ruby/Rails应用程序时的任何特别警告吗?
我想知道人们是否会分享他们处理异常和错误的最佳实践/策略.现在我不是在问什么时候抛出异常(这里已经得到了很好的回答:所以 :什么时候抛出异常).我并没有将它用于我的应用程序流程 - 但是有合理的例外情况一直在发生.例如,最受欢迎的是ActiveRecord :: RecordNotFound.处理它的最佳方法是什么?干嘛?
现在我在我的控制器中做了很多检查,所以如果Post.find(5)返回Nil - 我检查并发出一条flash消息.然而,虽然这是非常精细的 - 在某种意义上我需要检查每个控制器中的异常,但它们中的大多数基本相同并且与未找到的记录或未找到的相关记录有关 - 这样因为无论是Post.find(5)没有找到,或者如果你试图显示发布不存在的相关评论,这将抛出一个异常(像 Post.find(5).comments[0].created_at)
我知道你可以在ApplicationController中执行类似的操作,稍后在特定的控制器/方法中覆盖它以获得更细粒度的支持,但这是否是一种正确的方法呢?
class ApplicationController < ActionController::Base
rescue_from ActiveRecord::RecordInvalid do |exception|
render :action => (exception.record.new_record? ? :new : :edit)
end
end
Run Code Online (Sandbox Code Playgroud)
这也适用于Post.find(5)未找到的情况,但是Post.find(5).comments[0].created_at- 我的意思是如果帖子存在但是没有评论,我不能抛出一个完整的异常,对吧?
总结到目前为止,我正在使用if/else/except或者case/when(我偶尔承认开始/救援)并检查nil进行了大量的手动检查?或空?等等,但似乎必须有更好的方式.
回复:
@Milan:您好米兰感谢您的回复 - 我同意您所说的话,我认为我误用了例外.我的意思是,现在我做了很多事情,比如:
if Post.exists?(params[:post_id])
@p = Post.find(params[:post_id])
else
flash[:error] = " Can't find Blog Post"
end
Run Code Online (Sandbox Code Playgroud)
我做了很多这种"异常处理",我尽量避免使用开始/救援.但在我看来,这是一个足够普遍的结果/验证/情况,应该有一个DRYer方法来做到这一点,不是吗?你会怎么做这种检查?
在这种情况下如何处理呢?假设您要在视图中显示评论创建日期:
Last comment for this post at : <%= @post.comments[0].created_at %>
Run Code Online (Sandbox Code Playgroud)
这篇文章没有任何评论.你可以做
Last comment for …Run Code Online (Sandbox Code Playgroud) 我正在使用ImageMagick将一些文件从一种格式转换为另一种格式.我总是认为.png文件应该像.jpg一样大/小,如果不小,并且肯定小于.gif.
但是,当我跑
convert photo.jpg photo.png
Run Code Online (Sandbox Code Playgroud)
我拿出的文件比原来的jpg大6倍.
原始jpg是一张约300x500像素,52 kb的常规照片.输出是相同尺寸的合适png,但大小约为307 kb?
是否有人知道hack正在发生什么?难道我做错了什么?
PS:
我在Debian和Windows上都尝试了相同的结果.
PPS:
此外,当我为此添加调整大小选项并调整为10000 x 10000.转换和调整大小到jpg需要几秒钟,但它的工作原理,如果我做同样的png,我jsut strt完全耗尽了内存
PPPS: 对于那些将此问题标记为PNG与GIF与JPEG与SVG重复的人- 何时最好使用?.请仔细阅读并理解问题.这不是重复,因为这个问题询问'关于以特定应用程序(图像magick)编程生成的文件.您标记为重复的问题是询问哪种图像格式更适合在网络上使用.两个不同的问题.
我试图以这种格式在Windows平台上访问我的ruby脚本中的网络路径.
\\servername\some windows share\folder 1\folder2\
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试将其用作路径,它将无法工作.对于此脚本,没有正确转义单个反斜杠.
path = "\\servername\some windows share\folder 1\folder2\"
d = Dir.new(path)
Run Code Online (Sandbox Code Playgroud)
我尝试了所有我能想到的东西来正确地逃避路径中的斜线.但是我无法摆脱那个单一的反斜杠 - 因为它具有特殊意义.我尝试单引号,双引号,转义反斜杠本身,使用替代引号,如%Q {}或%q {},使用ascii转换为char.从某种意义上讲,我没有做任何事情.:-)现在临时解决方案是映射网络驱动器N:\指向该路径并以这种方式访问它,但这不是解决方案.
有谁知道如何正确逃脱单反斜杠?
谢谢
我想知道是否有关于在rails应用程序中存储全局设置的最佳实践.我的意思是:我有一些可能会改变的全局变量,但不太可能,因为它们被如此多地使用而将它们存储在DB中似乎是不合适的.例如,我有SYSTEM_EMAIL&SYSTEM_EMAIL_SIGNATURE和SYSTEM_STORAGE_ROOT.
现在我将它们保存在environment.rb中,但我不确定这是否适合存储它们.
谢谢
编辑:
接受的答案仍然适当,但我转而使用 https://github.com/markbates/configatron,还有其他选择,但我最喜欢configatron.
我知道之前已经回答了类似的问题 - 例如:
但是我有一个更具体的问题 - 我应该在多大程度上采用这个公理:保持你的控制器瘦,让你的模特变胖!
这是一个例子:
例如,假设我有多个验证数据源.一个很好的例子是VIN号码 - 我可以对它进行验证,制造商数据源,DMV的数据源,以及我的本地数据库 - 看看我记录的内容.所以我有一个名为Vin和vins_controller的模型.在模型内部我有5种方法:
在我的控制器中保持REST,在动作节目中 - 我有一个简单的case语句,它查看params [:source],并根据指定的源 - 将调用特定的check方法.
现在问题是:我应该保留控制在控制器中调用哪个数据源的逻辑,还是应该将其移动到模型中,然后在控制器中执行类似check_vin(source,vin)的操作?
我应该让我的控制器厌食吗?
编辑
我正在将此转换为来自@ jay-godse的官方回答(谢谢 - 当时这是一个很好的答案).自2010年以来,情况发生了很大的变化,这个问题仍然得到了一些看法 - 所以希望这会指出一些人正确的方向并帮助他们正确地组织他们的代码.
开拓者宝石 解决了问题中提出的问题.
是否可以设置Devise进行身份验证而无需密码?
这是一个Intranet应用程序.为了连接它,你必须首先在VPN上,加上应用程序只允许查看订单和历史的状态,而不是提交任何信息.我想类似于FedEx或UPS跟踪网站,但允许用户查看整个帐户,增加了客户端从我们这里获得的VPN盒的安全性.
现在我仍然需要密码,但这是对项目的不可协商的要求.客户已经习惯了这种方案,并且不太精通计算机以快速适应变化.
我有一堆静态资产(不是jpg,css和js) - 而是像pdf表单这样的文件,我需要向用户提供xls.他们很少改变.在我以前将它们存储在公共文件夹中之前,但是在rails 3.1中引入资产管道之后,现在存储文件的最佳位置是什么?
谢谢
尝试在ruby脚本中使用roo gem解析和XLSX文件.
在Excel中,日期以DDDDD.ttttt格式存储为浮点数或整数,从中计数1900-01-00 (00 no 01).因此,为了转换40396这样的日期 - 你会采取1900-01-00 + 40396,你应该得到2010-10-15,但我得到2010-08-08.
我正在使用active_support/time进行计算,如下所示:
Time.new("1900-01-01") + 40396.days
Run Code Online (Sandbox Code Playgroud)
我的计算错误还是有积极支持的错误?
我在Windows 7上运行ruby 1.9.3-mri +最新的active_support gem(3.2.1)
编辑
我正在使用错误的数据查看Excel中的旧文件 - 我的脚本/控制台正在提取正确的数据 - 因此我的困惑 - 我做的一切正常,除了使用正确的文件!该死的全能者!
感谢大家的回复,我会在这里保留问题,以防有人需要有关如何使用ruby从excel转换日期的信息.
对于遇到此问题的其他人 - 电子表格宝石也不支持此时正确读取XLSX文件(v 0.7.1) - 因此我使用roo进行读取,使用axlsx进行写入.