質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

1回答

2904閲覧

Railsでのエラーページの表示について

koume

総合スコア458

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2017/08/06 18:18

webアプリケーションを学習しながら開発中です。開発環境は以下になります。

ローカル開発環境
Ruby 2.3.1
Rails 5.1.3
MySQL

HTTPステータスコード403を表示させたいのですが・・・・

現在エラーページを表示させたくていろいろやっていますがERBテンプレートを読み込んでくれていないようなので対処方法がわからず
困っております。実行したコマンドや作成したファイルは次の通りです。

config/environments/production.rb Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. # Code is not reloaded between requests. config.cache_classes = false # Eager load code on boot. This eager loads most of Rails and # your application in memory, allowing both threaded web servers # and those relying on copy on write to perform better. # Rake tasks automatically ignore this option for performance. config.eager_load = true # Full error reports are disabled and caching is turned on. config.consider_all_requests_local = false config.action_controller.perform_caching = true # Enable Rack::Cache to put a simple HTTP cache in front of your application # Add `rack-cache` to your Gemfile before enabling this. # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid. # config.action_dispatch.rack_cache = true # Disable Rails's static asset server (Apache or nginx will already do this). config.serve_static_assets = true # Compress JavaScripts and CSS. config.assets.js_compressor = :uglifier # config.assets.css_compressor = :sass # Do not fallback to assets pipeline if a precompiled asset is missed. config.assets.compile = false # Generate digests for assets URLs. config.assets.digest = true # Version of your assets, change this if you want to expire all your assets. config.assets.version = '1.0' # Specifies the header that your server uses for sending files. # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. # config.force_ssl = true # Set to :debug to see everything in the log. config.log_level = :info # Prepend all log lines with the following tags. # config.log_tags = [ :subdomain, :uuid ] # Use a different logger for distributed setups. # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) # Use a different cache store in production. # config.cache_store = :mem_cache_store # Enable serving of images, stylesheets, and JavaScripts from an asset server. # config.action_controller.asset_host = "http://assets.example.com" # Precompile additional assets. # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. # config.assets.precompile += %w( search.js ) # Ignore bad email addresses and do not raise email delivery errors. # Set this to true and configure the email server for immediate delivery to raise delivery errors. # config.action_mailer.raise_delivery_errors = false # Enable locale fallbacks for I18n (makes lookups for any locale fall back to # the I18n.default_locale when a translation cannot be found). config.i18n.fallbacks = true # Send deprecation notices to registered listeners. config.active_support.deprecation = :notify # Disable automatic flushing of the log to improve performance. # config.autoflush_log = false # Use default logging formatter so that PID and timestamp are not suppressed. config.log_formatter = ::Logger::Formatter.new # Do not dump schema after migrations. config.active_record.dump_schema_after_migration = false end
#例外の補足 app/controllers/apprication_controller.rb class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception layout :set_layout class Forbidden < ActionController::ActionControllerError; end class IpAddressRejected < ActionController::ActionControllerError; end rescue_from Exception, with: :rescue500 rescue_from Forbidden, with: :rescue403 rescue_from IpAddressRejected, with: :rescue403 private def set_layout if params[:controller].match(%r{\A(staff|admin|customer)/}) Regexp.last_match[1] else 'customer' end end def rescue403(e) @exception = e render 'errors/forbidden', status: 403 end def rescue500(e) @exception = e render 'errors/internal_server_error', status: 500 end end
# ERBテンプレートを作成 app/views/errors/forbidden.html.erb <div id="error"> <h1>403 Forbidden</h1> <p> <%= case @exception when ApplicationController::IpAddressRejected "あなたのIPアドレス(#{request.ip})からは利用できません。" else '指定されたページを閲覧する権限がありません。' end %> </p> </div>
#エラー場面が正しく表示されるかどうかを調べるコード。 app/controllers/admin/top_controller.rb class Admin::TopController < ApplicationController def index raise IpAddressRejected #意図的に例外を発生させる。 end end
アセットをプリコンパイルする。 $ rails assets:precompile RAILS_ENV=production

Rails を起動(アプリケーションの再起動)した後で

サーバーを起動する。 $ rails s -e production

ブラウザで http://localhost:3000/admin

表示させたいページ

403Forbidden
あなたのIPアドレス(10.0.2.2)からは利用できません。

と表示させたいのですが、

実際のページ

We're sorry, but something went wrong.
If you are the apprication owner check the lobs for more information.

とproductionモードにおけるデフォルトのエラ-画面が表示されてしまいます。

ERBテンプレートの app/views/errors/forbidden.html.erb が読み込めていないのか?それとも読み込んでも反映されて
いなのか?原因がわからないのでどなたか教えていただけないでしょうか?宜しくお願いします。
質問内容が長くて申し訳ございません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

一からコードを見直して、テンプレートの抜け、未作成。レイアウトの記述ミス、
抜け、未作成。cofig/initializers/assets.rbへのcss読み込みの記述。
などなど、たくさん発見し修正したところ上手くいきました。自分の無能さに改めて
気付かされましたが、ファイルの読み込み、アセットのプリコンパイルなど
かなり学習したしアプリケーション制作の奥深さを痛感したような感じです。今回は、自力で解決できましたが、くじけずに頑張りますので今後とも宜しくお願いします。

投稿2017/08/07 06:31

koume

総合スコア458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問