标签: ruby-grape

为什么在Rails中安装路由失败并显示"未初始化的常量API"?

我正在开发一个包含API使用grapegem 的应用程序.

这是我的Root班级:

module API
  class Root < Grape::API
    rescue_from :all do |e|
      Rack::Response.new(
        [ "Error: #{e.message}" ],
        500,
        { "Content-type" => "text/error" }
      ).finish
    end

    prefix "api"
    version 'v1', using: :path
    format :json
    error_format :json

    mount ::API::ServiceRequests
  end
end
Run Code Online (Sandbox Code Playgroud)

以下是我如何在路线中安装它:

mount API::Root => '/'

我收到的错误是: routes.rb:45:in阻止':未初始化的常量API(NameError)`

文件结构相似app/api/root.rb,我在我application.rb的文件中加载了这些代码:

config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')
config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-grape rails-routing

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

如何处理Grape中特定操作的过滤器之前?

我正在我的Rails项目中安装Grape来构建RESTful API.

现在一些端点有需要身份验证的操作和其他不需要身份验证的端点.

例如,我有users一个看起来像这样的终点:

module Backend
  module V1
    class Users < Grape::API
      include Backend::V1::Defaults

      before { authenticate! }

      resource :users do

        desc "Return a user"
        params do
          requires :id, type: Integer, desc: 'User id'
        end
        get ':id' do
          UsersService::Fetch.new(current_user,params).call
        end

        desc "Update a user"
        params do
          requires :id, type: Integer, desc: 'User id'
          requires :display_name, type: String, desc: 'Display name'
          requires :email, type: String, desc: 'Email'
        end
        post ':id' do
          UsersService::Save.new(current_user,params).call
        end

        desc "Reset user password"
        params do …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-grape grape-api

5
推荐指数
2
解决办法
2042
查看次数

葡萄 - 表读作常数

我正在使用rails 5和grape for api,我正在尝试为表格应用程序创建葡萄终点.

module PROJ::API::V2
  class Applications < ::Grape::API
      get '/' do
        authorize! :read, Application
        status 200
        present Application.list(filter_params, current_user), with: Entities::ApplicationList, only_show: params[:only], person_base: true, current_ability: current_ability, user: current_user, nps_details: params[:nps_details]
      end
  end
end
Run Code Online (Sandbox Code Playgroud)

我正在获得未初始化的常量PROJ :: API :: V2 :: Applications :: Application.我尝试更改类名和文件名仍然发生相同的错误.

ruby-on-rails ruby-grape ruby-on-rails-3 grape-api

5
推荐指数
0
解决办法
46
查看次数

如何获取依赖项并使其与IntelliJ项目一起使用?

我试图在IntelliJ 12中启动一个GroovyFX项目.但是,我无法让IntelliJ编译并运行以下简单脚本(以最简单的方式重现问题):

@Grab(group='org.codehaus.groovyfx', module='groovyfx', version='0.3.1')
import groovyx.javafx.GroovyFX
println GroovyFX.class.name
Run Code Online (Sandbox Code Playgroud)

我使用IntelliJ对Grape's Grab的支持来添加groovyfx作为我的模块的依赖项(jar显示在"外部库"下,编辑器不会抱怨之后缺少类!)但是,当我运行脚本时,它会抛出一个错误:

Groovyc:无法解析类groovyx.javafx.GroovyFX

我能够在GroovyConsole中使用这个脚本没有太多问题,并且符合预期......

我尝试抓住另一个随机选择的依赖项(原来是一个Spring库),它直接工作:

@Grab(group='org.springframework', module='spring', version='2.5.6')
import org.springframework.jdbc.core.JdbcTemplate
println JdbcTemplate.class.name
Run Code Online (Sandbox Code Playgroud)

我看不出Spring库应该工作的原因,但不是GroovyFX库!

我甚至仔细检查了GroovyFx库是否已经实际下载了,它应该在哪里(在{user.home}/.groovy/grapes/{group}/{module}/jars /下)

是什么导致这种奇怪而极其令人沮丧的问题?

groovy intellij-idea ruby-grape groovyfx

4
推荐指数
1
解决办法
4481
查看次数

如何用葡萄返回空响应?

我有一个format :xmlGrape::API,对于删除请求,我想返回一个空响应。

我尝试输入的所有内容,true、false、nil,它都会尝试转换为 xml。我该怎么做呢?

谢谢

api rack ruby-on-rails ruby-grape ruby-on-rails-3

4
推荐指数
1
解决办法
3302
查看次数

Activerecord关联作为JSON与Grape

有没有一种简单的方法可以使用Grape微框架将关联的activerecord模型作为JSON返回?

get 'users' do
  User.includes(:address)
end
Run Code Online (Sandbox Code Playgroud)

此代码段不起作用,User.includes(:address).to_json(include: :address)将以JSON编码两次.(to_json无论如何,我自己使用这种方法感觉不对)

ruby activerecord json ruby-on-rails ruby-grape

4
推荐指数
1
解决办法
1560
查看次数

在Grape gem中设置状态代码

如何在使用Grape gem时自定义状态代码响应?例如

post do
   status = :accepted
   @order = Order.find(params[:id])
end
Run Code Online (Sandbox Code Playgroud)

这可以通过错误来实现!({error:'Order not found'},404)但是如何为非错误做到这一点?

ruby-on-rails ruby-grape grape-api

4
推荐指数
1
解决办法
3634
查看次数

rails ActiveModel :: Serializers与葡萄相比如何?

有人可以解释之间的差异ActiveModel::SerializersGrape.我应该使用其中一种还是可以/应该一起使用它们.有人还可以解释使用上述一个(或两个)与仅仅使用rails它自己构建一个的好处restful JSON API吗?

先感谢您

ruby-on-rails ruby-grape active-model-serializers grape-api

4
推荐指数
1
解决办法
1213
查看次数

葡萄,将JSON作为params发送

My Grape API接受json格式,我有接受JSON作为参数的方法:

desc 'JSON test'
params do
  requires :json, type: JSON
end
post :json_test do
  json = params[:json]
  {result: json}
end
Run Code Online (Sandbox Code Playgroud)

当我通过邮递员发出请求时,参数是原始的application/json内容类型:

{
   "json": {"test": "test"}
}
Run Code Online (Sandbox Code Playgroud)

当我发送这个时,我收到错误消息:

"json is invalid"
Run Code Online (Sandbox Code Playgroud)

但是,当我这样发送时:

{
  "json": "{\"test\": \"test\"}"
}
Run Code Online (Sandbox Code Playgroud)

它显示了我正确的答案:

{
 "result": {
   "test": "test"
  }
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?当我制作类型Hash第一个变体工作,但如果我想发送Array哈希/ jsons?我知道Grape不支持Array[Hash]类型.

ruby json ruby-on-rails ruby-grape

4
推荐指数
1
解决办法
2865
查看次数

在没有存储库访问权限的情况下在Groovy应用程序中包含依赖项

我有一个Groovy项目(使用Eclipse),该项目使用了多个@Grab语句。这在我的开发机器上工作正常。但是,我需要将此应用程序(包括其所有依赖项)分发给没有任何互联网连接的其他计算机,即无法从这些计算机下载必要的JAR。

有没有办法以某种方式自动将依赖项包括在项目中,例如lib文件夹?这样,我可以将项目复制到另一台机器上并使用它。

groovy ruby-grape

3
推荐指数
1
解决办法
3384
查看次数