为什么better_errors不能在cloud 9 ide上运行?

ele*_*ong 4 cloud9-ide ruby-on-rails-4 better-errors-gem

我正在研究cloud9 IDE上的一些项目,而且我无法让错误的gem更好地正常工作,这真是令人沮丧.它不应该需要初始化; 它应该只是开箱即用.但是,我仍然只得到通常丑陋的红色错误页面.我应该指定它包含在我的gemfile中,而且我bundle install已经.

如何才能使错误更好才能正常工作?我缺少一个安装步骤吗?

Gro*_*ile 5

我使用的技巧是让Cloud9中的'better_errors'宝石正在设置TRUSTED_IP我的浏览器会话附加到的计算机的公共IP地址的值.(据我所知,它与远程服务器或Cloud9服务器地址的IP地址无关.)

我将概述用于在我的Cloud9工作区上工作的'better_errors'的过程,从我的住宅网络上的Chromebook开始......也许它也适用于您和其他人!

  1. 添加gem "better_errors"到项目Gemfile中的开发组.
  2. 添加gem "binding_of_caller"到项目Gemfile.
  3. bundle在项目Cloud9终端中运行$ .
  4. 编辑项目config/environments/development.rb文件,并将以下代码行添加到Rails.application.configure块的末尾.

    BetterErrors::Middleware.allow_ip! ENV['TRUSTED_IP'] if ENV['TRUSTED_IP']
    
    Run Code Online (Sandbox Code Playgroud)
  5. 通过单击"运行" > "运行方式" > "新运行器 "在Cloud9中创建一个新的"跑步者".
  6. Cloud9在新选项卡中创建基本的跑步者文件以进行修改.用以下代码替换此文件的内容.

    {
       "cmd": [
         "bash",
         "--login",
         "-c",
         "TRUSTED_IP=XXX.XXX.XXX.XXX rails server -p $port -b $ip $args"
      ],
      "working_dir": "$project_path",
      "info": "Your code is running at \\033[01;34m$url\\033[00m.\n\\033[01;31m",
      "selector": "source.ru"
    }
    
    Run Code Online (Sandbox Code Playgroud)
  7. XXX.XXX.XXX.XXX上面的代码替换为本地计算机的公共IP地址.(我使用http://ifconfig.me/查找分配给我的Chromebook的公共IP.)
  8. 将名为RoR.run的runner文件保存到项目的/.c9/runners路径中.
  9. 使用此新运行器启动项目服务器.单击运行 > 运行方式 > RoR.
  10. 使用Cloud9在跑步者启动服务器后显示的弹出链接来查看应用程序.享受'better_errors'!

注意:我仍然没有想出如何自动化将本地计算机的外部IP地址提供给Cloud9工作区中的RoR.run文件的过程.我只是每次移动到新网络或外部IP地址更改时手动更新它.

警告:我实际上刚开始学习RoR,所以我不知道这是否是让这个gem在云开发服务器/服务环境中工作的"正确"方法.我也不知道这会有多安全.我怀疑我的解决方案将"better_errors"浏览器内REPL暴露给解析为同一外部IP地址的所有计算机.如果您正在处理敏感的代码库/数据库,请不要实现我的解决方案.