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

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

ただいまの
回答率

87.59%

ウェブサイトへのRubyプログラム組み込み

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 1,324

score 16

現状

現在、htmlとCSSで構成されたウェブサイトの管理をしています。
ここに問い合わせフォームをつけるということで、その方法を探しています。

Rubyで簡単な処理プログラムを書く程度ならできますので、Rubyで進めたいです。
問い合わせフォーム自体を作るためのgem探しやその書き方は頑張ってこなせそうなのですが、肝心のできたプログラムを既存のウェブサイトに組み込む方法がイメージできません。

進行案と質問

A)シンプルにrailsを使わずerbで埋め込む
=>erbをrailsなし(gemをrailsなしで)で使うことはできるのか?

B)Railsでアプリを作って既存ページの下層に配置する
=>DBを使うわないのに大げさな気がする。同ドメインの中でそもそもそういうことができるのか?

備考

最終手段として外部の問い合わせフォームレンタルサービスを使う事も考えてますが、できる限り内製してみたいです。

初歩的な質問ですがどなたかご助力ください。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

細かく全部のやり方まで書いてしまうと長くなりそうだったので、キーワードと概要だけだします。

  • CGI
    前世紀からある方法です。アクセスの度にプロセス起動があるため重いですが、Railsのように巨大である、秒間数百といった大量のアクセスを裁かなければならない、と言うことが無ければ十分です。Apache HTTP Serverの場合は簡単に設置できますが、nginxの場合はfcgiwrap等を使用する必要があり、ちょっと面倒になります。
    ERBはerbライブラリを使用して組み込みます。
  • AddType/Action + erb.cgi
    Apache HTTP Serverでしか使えませんが、ERBのファイル(通常は.rhtmlという名前にします)をそのままCGIのように使う方法があります。重さはCGIと同じです。
  • FastCGI
    CGIの欠点であるアクセスの度にプロセス起動を解決した方法です。少し書き換えが必要ですが、CGIをそのまま流用することも出来ます。Apache HTTP Serverとnginxどちらでも使用可能です。
  • Rack
    RackはRubyのデファクトスタンダードなWebインターフェースを提供するものです。RalisもRack上で動作するようにできています。CGIやFastCGIで動作させることも出来ますし、Railsのようにpumaやunicornを使って動作させることもできます。
    Rack自体はインターフェースしか用意しませんので、そのままこれだけを使うのは少し大変になります。
  • Rack + Sinatra
    SinatraはRubyのシンフレームワークです。Railsと同じくRack上で動作します。フルスタックフレームワークであるRailsとの違いは、必要最低限の基本機能を用意し、必要なものを付け足していくという方式です。といってもERBを使うことは可能です。動かし方もRailsとそれほど違いはありません。

簡易な物であればCGI、ちょっと本格的な物であればRack + Sinatra(pumaを使用)をお勧めしておきます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/01 12:22 編集

    CGIで進めようと思い、
    既存のhtmlをhtml.erbに拡張子を変更して試してみたのですが、<%= %>内に書いたコードがプログラムとして認識されませんでした。
    require '...' を書いても動かず、どうやってERBのライブラリを読み込めば良いのかがわかりません。
    (かなり基本的な部分で自分の理解が間違っている感じがします)

    キャンセル

  • 2019/02/01 19:19 編集

    erbライブラリの使い方は下記などを参考にしてください。
    https://docs.ruby-lang.org/ja/latest/class/ERB.html
    erbファイルをただおいてもerbとしては認識されません。他のCGIファイルの中でerbファイルの中身を読み込み、ERBに渡す必要があります。Rails等も見えないところでそのようにしているだけです。erb自体を実行しているわけではありません。

    キャンセル

0

RubyでもCGI的に使うことはできるのでフォームくらいならそれでいいのでは。
form.rbのような1ファイルで作ってhttp://example/form.rbで表示。
Railsは明らかに過剰。

Railsしか知らない場合はそもそもの発想をかなり変えないと辛いけど。
これはたぶん2005年とかで古いけどRails前のRubyの使われ方はこんなもの。
https://magazine.rubyist.net/articles/0011/0011-CGIProgrammingForRubyBeginners.html

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る