标签: rack

如何强制机架围绕通常的"你已经激活机架......"错误?

这是一个常见的问题,但没有一个答案似乎可以解决这个问题.我得到通常的:You have already activated rack 1.4.1, but your Gemfile requires rack 1.3.6. Using bundle exec may solve this.

清除Gemlock文件什么都没做,bundle install再次运行bundle install --binstubs没有做任何事情......运行没有解决问题,因为从你的应用程序根"运行./bin/{rake|rails|etc"只是造成了更多的错误.有没有办法解决这个看似常见的问题?

rack ruby-on-rails

25
推荐指数
1
解决办法
9169
查看次数

rails json使用gzip压缩响应

我有一个用rails编写的api,每个请求都响应一个JSON响应.

响应可能很大,所以我需要使用gzip压缩JSON响应.

想知道如何在rails控制器中执行此操作?

我添加了这条线

use Rack::Deflater
Run Code Online (Sandbox Code Playgroud)

在config.ru中

我是否还应该改变呈现JSON的行?

render :json => response.to_json()
Run Code Online (Sandbox Code Playgroud)

另外,我如何检查响应是否是gzip格式.. ??

我从终端做了一个curl请求,我只看到普通的普通JSON.

json gzip rack ruby-on-rails ruby-on-rails-3

24
推荐指数
3
解决办法
2万
查看次数

无法让机架在轨道应用中工作

我想在我的rails应用程序中实现CORS,所以我用Google搜索了rack-cors gem.我按照README中的说法做了一切,相应地更新了Gemfile并更新application.rb如下:

module YourApp
  class Application < Rails::Application

    # ...

    config.middleware.use Rack::Cors do
      allow do
        origins '*'
        resource '*', :headers => :any, :methods => [:get, :post, :options]
      end
    end

  end
end
Run Code Online (Sandbox Code Playgroud)

但它没有用.不管我做了什么,在浏览器控制台中我不断收到消息:
XMLHttpRequest cannot load https://somewebsite.com. Origin http://0.0.0.0:3000 is not allowed by Access-Control-Allow-Origin.

看完这个博客帖子问题在github上,我意识到,机架CORS中间件在中间件堆栈事项可能位置.所以我按照github问题的说法做了:

module YourApp
  class Application < Rails::Application

    # ...

    config.middleware.insert 0, Rack::Cors do
      allow do
        origins '*'
        resource '*', :headers => :any, :methods => [:get, :post, :options]
      end
    end

  end …
Run Code Online (Sandbox Code Playgroud)

ruby rack ruby-on-rails cors

24
推荐指数
2
解决办法
2万
查看次数

如何从Sinatra中转储HTTP请求?

有没有办法以应用程序接收数据的确切方式将所有传入请求转储到Sinatra应用程序?也许是某种Rack中间件?

ruby rack sinatra

23
推荐指数
2
解决办法
3万
查看次数

将Sinatra应用程序安装在rails应用程序内并共享布局

我想在我的rails应用程序中安装sinatra应用程序.但我希望这个人分享相同的布局.

iframe可以工作,但你还有其他想法吗?

谢谢

rack ruby-on-rails sinatra ruby-on-rails-3

23
推荐指数
1
解决办法
8958
查看次数

如何在Heroku上阻止或过滤IP地址?

有没有办法实现IP过滤或IP访问规则,就像我使用nginx/apache来限制或阻止Heroku上的某些IP一样?

注意:我知道这可以在我的应用程序(Rails 3.2)中轻松完成,但我不认为这是Heroku上最有效的资源使用.此外,基于Rack的解决方案比在Rails中实现过滤更好.

security ip rack ruby-on-rails heroku

23
推荐指数
2
解决办法
1万
查看次数

在rspec中指定内容类型

我正在尝试构建一个通过POST发送JSON(或XML)的rspec测试.但是,我似乎无法让它真正起作用:

    json = {.... data ....}.to_json
    post '/model1.json',json,{'CONTENT_TYPE'=>'application/json'}
Run Code Online (Sandbox Code Playgroud)

还有这个

    json = {.... data ....}.to_json
    post '/model1.json',json,{'Content-Type'=>'application/json'}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

ruby rack rspec sinatra

22
推荐指数
4
解决办法
2万
查看次数

git,Heroku:预先接收挂钩拒绝

我正在设置git存储库并尝试将其链接到Heroku.当我运行命令

git push heroku master
Run Code Online (Sandbox Code Playgroud)

我收到

Counting objects: 7, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 714 bytes, done.
Total 7 (delta 1), reused 0 (delta 0)

-----> Heroku receiving push

 !     Heroku push rejected due to an unrecognized error.
 !     We've been notified, see http://support.heroku.com if the problem persists.


To git@heroku.com:morning-stream-3712.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:morning-stream-3712.git'
Run Code Online (Sandbox Code Playgroud)

我不太确定其他什么信息会有什么帮助,什么会使水变得混乱,所以我现在就把它留在这里.任何将我的应用程序推送到Heroku的帮助将不胜感激.谢谢.

ruby git rack heroku

22
推荐指数
5
解决办法
5万
查看次数

有没有办法从heroku提供gzip资产?

我想知道是否有任何方法可以让Rails网络服务器(瘦)服务于资产管道创建的*.gz文件.据我所知,那些压缩级别比压缩级别更高Rack::Deflater,只能serve_static_assets在rackup文件中使用,而不能在config.middleware.

一个不太理想的解决方案可能是更改默认压缩级别,Zlib即哪些Rack::Deflater引用.它应该只需要gzip一次,然后它去Rack::Cache,然后希望是CDN.

第二个不太理想的解决方案可能是a Rack::Rewrite.

gzip rack ruby-on-rails heroku asset-pipeline

22
推荐指数
2
解决办法
1万
查看次数

为什么到处都有冷冻常数?

我们可以很容易地从许多着名的存储库中找到这样的样式,比如机架,导轨等.

例如在机架中:

PATH_INFO      = 'PATH_INFO'.freeze
REQUEST_METHOD = 'REQUEST_METHOD'.freeze
SCRIPT_NAME    = 'SCRIPT_NAME'.freeze
QUERY_STRING   = 'QUERY_STRING'.freeze
CACHE_CONTROL  = 'Cache-Control'.freeze
CONTENT_LENGTH = 'Content-Length'.freeze
CONTENT_TYPE   = 'Content-Type'.freeze
Run Code Online (Sandbox Code Playgroud)

rails中的另一个例子:

HTTP_IF_MODIFIED_SINCE = 'HTTP_IF_MODIFIED_SINCE'.freeze
HTTP_IF_NONE_MATCH     = 'HTTP_IF_NONE_MATCH'.freeze
HTTP_IF_NONE_MATCH     = 'HTTP_IF_NONE_MATCH'.freeze
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这些常量字符串被冻结.因为它们都是常量,所以应该只有一个实例.当然我们可以在"foo".freeze某个地方引用相同的单例实例,但是人们通常会编写文字变量名称HTTP_IF_MODIFIED_SINCE.

所以在我看来,尽管使用它没有任何区别#freeze,为什么人们会冻结常数?

ruby rack ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

22
推荐指数
2
解决办法
5539
查看次数