小编mfu*_*aro的帖子

葡萄错误处理策略?

我正在使用Grape和Rails来创建REST API.我有基本的架构,我正在寻找"清理"的地方.其中一个地方是错误处理/处理.

我目前正在整个API的root.rb(GRAPE :: API基类)文件中解决错误.我格式化它们然后通过rack_response发回错误.一切正常,但是root.rb文件变得有点臃肿,所有的错误都被拯救了,其中一些有特殊的解析需要完成.我想知道是否有人为错误处理制定了一个好的策略,以便它可以移动到它自己的模块中并使root.rb(GRAPE :: API基类)相当精简.

我真的想创建一个错误处理模块并为每种类型的错误定义方法,例如......

module API
 module ErrorHandler
   def record_not_found
     rack_response API::Utils::ApiErrors.new({type: e.class.name, message: 'Record not found'}).to_json, 404
   end
 end
end
Run Code Online (Sandbox Code Playgroud)

然后在root.rb文件中执行类似的操作

module API
  class Root < Grape::API
    prefix 'api'
    format :json

    helpers API::ErrorHandler

    rescue_from ActiveRecord::RecordNotFound, with: :record_not_found # Use the helper method as the handler for this error
  end
end
Run Code Online (Sandbox Code Playgroud)

有没有人做过这样的事情?我一直在尝试上述策略的各种风格,但我似乎无法做任何事情.

ruby rest ruby-on-rails ruby-grape grape-entity

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

如何在bash中移动数字?

我有一个家庭作业,要求将十进制数转换为指定的数字位数.更明显的是,这个bash脚本将采用两个输入参数,第一个是将执行移位的数字(最多9位),第二个是要移位的数字的数字(-9到9).另一个要求是,当一个数字从末端移开时,它应该连接到数字的另一端.需求的一个令人头痛的问题是我们不能使用任何类型的控制语句:没有循环,没有if和switch case.

示例:12345 3应该是345000012而12345 -3应该是12345000

我知道如果我修改12345乘10 ^ 3我得到345然后如果我将12345除以10 ^ 3我得到12然后我可以将这两个变量连接起来得到34512.我不太确定这是不是确切正确,但这是我现在最接近的.至于-3班次,我知道10 ^ -3是.001并且会工作但是当我尝试在bash中使用10 ^ -3时我得到一个错误.

我只是迷失在这一点,任何提示将不胜感激.

编辑:经过几个小时的抨击(双关语)我的头脑反对这个问题,我终于想出了一个大部分工作的脚本.我现在会发布这些代码,但我担心另一名绝望的失败者可能偶然发现它.我会在一两周内检查并发布我想出的内容.我能够用mods和division做到这一点.谢谢大家的回复,这真的帮助我从不同角度打开并思考问题.

bash

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

尝试通过控制台浏览类时出现OrientDB错误

我在Java的嵌入式环境中使用OrientDB.我正在我的应用程序中创建数据库和类并插入数据.当我通过控制台查看数据时,我可以看到数据库中的类,以及类中正确的行数.但是,当我尝试通过此命令浏览类中的数据时browse class testData,我收到以下错误

Error: com.orientechnologies.orient.core.exception.OSerializationException: Found invalid % character. Ensure it is opened and closed correctly.

我已经搜索了我的源数据,它不包含任何内容%.我知道OrientDB对间距特别敏感,特别是在字符周围,)但是我所拥有的数据并没有使用似乎有错误的字符.

有没有人遇到过这种错误?有关如何解决错误的任何想法?

用于创建数据库的代码

private void createNewOrientDatabase(){
    String dbPath = "plocal:./db/test";
    orientDatabase = new ODatabaseDocumentTx(dbPath).create();
}
Run Code Online (Sandbox Code Playgroud)

用于创建类的代码

 public void createClasses(Table t){
    if(orientDatabase.getMetadata().getSchema().getClass(t.getName()) == null) {
        orientDatabase.getMetadata().getSchema().createClass(t.getName());
    }
 }
Run Code Online (Sandbox Code Playgroud)

插入数据的代码

public void insertData(Table table, TableSource data){
    for (String s : data){
        ODocument document = new ODocument(table.getName());
        String[] parts = s.split(",");
        for(int i = 0; i < table.getColumns().size(); ++i){
            document.field(table.getColumns().get(i).getName(),parts[i]);
        } …
Run Code Online (Sandbox Code Playgroud)

java database orientdb

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

标签 统计

bash ×1

database ×1

grape-entity ×1

java ×1

orientdb ×1

rest ×1

ruby ×1

ruby-grape ×1

ruby-on-rails ×1