Ruby on rails 4 为什么';在cloud 9 ide上工作不是更好吗?
我在Cloud9IDE上做了很多项目,但我无法让更好的错误gem正常工作,这真是令人沮丧。它不需要初始化;它应该是开箱即用的。然而,我仍然只看到通常的丑陋的红色错误页面。我应该指定它包含在我的GEM文件中,并且我已经安装了Ruby on rails 4 为什么';在cloud 9 ide上工作不是更好吗?,ruby-on-rails-4,cloud9-ide,better-errors-gem,Ruby On Rails 4,Cloud9 Ide,Better Errors Gem,我在Cloud9IDE上做了很多项目,但我无法让更好的错误gem正常工作,这真是令人沮丧。它不需要初始化;它应该是开箱即用的。然而,我仍然只看到通常的丑陋的红色错误页面。我应该指定它包含在我的GEM文件中,并且我已经安装了bundle 如何获得更好的错误以正确工作?我缺少安装步骤吗?因为Cloud9都是基于web的,您不能从localhost访问它,所以默认情况下,更好的错误不会起作用。如果查看其自述文件()的安全部分,可以将以下内容添加到config/environments/developm
bundle
如何获得更好的错误以正确工作?我缺少安装步骤吗?因为Cloud9都是基于web的,您不能从localhost访问它,所以默认情况下,更好的错误不会起作用。如果查看其自述文件()的安全部分,可以将以下内容添加到config/environments/development.rb中:
BetterErrors::Middleware.allow_ip! <ipaddress>
BetterErrors::Middleware.allow_ip! 'xxx.xxx.xxx.0/24'
BetterErrors::Middleware.allow\u ip!
因此,错误页面显示您的IP。你可以通过点击旧错误页面的“Show env dump”并查看“REMOTE_ADDR”来找到你的明显IP。我用来让“better_errors”gem在Cloud9中工作的诀窍是将
TRUSTED_IP
的值设置为我的浏览器会话所连接的计算机的公共IP地址。(据我所知,它与远程服务器的IP地址或Cloud9服务器地址无关。)
我将从住宅网络上的Chromebook概述我在Cloud9工作区中获得“更好的错误”的过程。。。也许它也会对你和其他人有用
gem“better\u errors”
添加到项目文件中的开发组gem“绑定调用方”
添加到项目文件中bundle
BetterErrors::Middleware.allow_ip! ENV['TRUSTED_IP'] if ENV['TRUSTED_IP']
{
"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"
}
XXX.XXX.XXX.XXX
替换为本地计算机的公共IP地址。(我使用查找分配给Chromebook的公共IP。)警告:我实际上刚刚开始学习RoR,所以我不知道这是否是让这个gem在云开发服务器/服务环境中工作的“正确”方法。我也不知道这会有多安全。我怀疑我的解决方案将浏览器REPL中的“better_错误”暴露给解析为同一外部IP地址的所有计算机。如果您使用的是敏感代码库/数据库,请不要实现我的解决方案。我刚刚在cloud9.io中测试了这一点,这是在cloud9.io中实现这一点的最简单方法: 将以下行添加到config/environments/development.rb:
BetterErrors::Middleware.allow_ip! <ipaddress>
BetterErrors::Middleware.allow_ip! 'xxx.xxx.xxx.0/24'
其中xxx.xxx.xxx是用于连接到cloud9.io的本地计算机IP地址的前三个部分。在better errors issues和c0 docs中有一个很好的答案 问题: c9帮助 使用
Rack::Request
对象获取IP。您可以在视图中放置以下代码
if Rails.env.development?
request = Rack::Request.new(env)
puts "@@@@@@ Request IP_ADDRESS = #{request.ip}"
end
将IP的最后一个象限更改为0/24
。比如说
BetterErrors::Middleware.allow_ip! '76.168.69.0/24' <--note: change the last quad to 0/24 and of course your ip address will be different than 76.168.69.xx
BetterErrors::Middleware.allow_ip!'76.168.69.0/24'是的!!我得到了它!自动地
以下是我的解决方案:
1-与@Grokcodile所述类似:编辑project config/environments/development.rb文件,并将以下代码行添加到Rails.application.configure块
BetterErrors::Middleware.allow_ip! ENV['TRUSTED_IP'] if ENV['TRUSTED_IP']
config.web_console.whitelisted_ips = ENV['TRUSTED_IP']
2-在Cloud9上编辑~/.bashrc
vi ~/.bashrc
添加行(输入,alt+a):
保存它(esc,:wq)
3-像往常一样运行rails s-b$IP-p$PORT
4-享受更好的错误强>
如果您也在虚拟机(vagrant)上处理此项目:
1-在虚拟机(vagrant)上编辑~/.bash_档案(我的案例),并添加:
x、 x.x.x必须等于ENV的远程地址。(这不像cloud9那样是一个问题,因为在我的虚拟机上,IP不会每次都改变:10.0.2.2总是适合我)
有了这个,我现在可以在两个地方使用gem foreman:foreman start
和Procfile:
web: rails s -b $IP -p $PORT
这是因为全局环境变量是在这两个节点上设置的
我也刚刚开始学习RoR,所以,希望这是正确的做法,不会在将来带来更多问题。我正在使用2.0.0版。我添加了您上面提到的行,我用一个包含我的ip“xx.xx.xx.xx”
的字符串替换了
,我没有得到任何更改。重新启动服务器后仍显示标准错误页。我没有主意了。也许值得给他发封电子邮件support@c9.io所以他们可以诊断为什么它不工作。我还喜欢在处理Cloud9时在路由错误页面上显示控制台。为此,我将config.web\u console.whitelisted\u ips=ENV['TRUSTED\u IP']
添加到我的projects config/environments/development.rb文件中。