Ruby on Rails (以下、単にrails)は、Ruby言語で書かれたWebフレームワークです。
ハブには言語に関するいくつかの記事がありますが、困難がある場合はそれらを読むのが役立つと思います-
ウィキペディア 、言語で最高の本
-Rubyのプログラミング 、レールで最高の本
-Railsでのアジャイル開発 、そして質問をしてください。
RubyとRailsのインストールを始めましょう。
Windowsユーザーは、
ワンクリックRubyインストーラーをダウンロードしてインストールする必要があり
ます 。
Linux(Ubuntu)ユーザーは、Rubyをさらに簡単にインストールできます。
<code class = 'sh' lang = 'sh'> $> sudo apt-get install ruby rubygems rake </ code>
Rubyが動作していることを確認してください
<code class = 'sh' lang = 'sh'> $> ruby -v
ruby 1.8.5(2006-08-25)[i486-linux] </ code>
レールを配置します。
<code class = 'sh' lang = 'sh'> $> gem install rails --include-dependencies
$> rails -v
Rails 1.2.3 </ code>
始めるために必要なのは、Ruby構文の強調表示とコンソールからコマンドを実行する機能を備えたテキストエディターだけです。
IDEのファンのために、私は
Aptanaにアドバイスすることができます、私はそれにコードを書きます(私はちょうどEclipseが好きです:)。
コンソールのすべての例を提供します。Aptanaで行うべきことは明確である必要があります。これについては別に記述できます。
これで、すべてが新しいプロジェクトを開始する準備ができました。
Railsのプロジェクトは、プロジェクトスケルトンの作成から始まります。
<code class = 'sh' lang = 'sh'> $> rails〜/ projects / example </ code>
サンプルフォルダーが作成され、その中にプロジェクトスケルトンが作成されます(パスを独自のものに置き換えることを忘れないでください)。 中身を見てみましょう。
- アプリ-ここにアプリケーションコードがあります:モデル、ビュー、コントローラー
- コンポーネントは古いバージョンのレガシーであり、コンポーネントは使用されません
- config-アプリケーション構成:主に興味がある
- データベース接続パラメーターとコントローラーメソッドへのURLルーティング
- db-データベースで作成されたテーブルの設定はここに保存されます
- doc-コード内のコメントから生成されたドキュメント
- lib-便利なライブラリのコードを配置できます
- log-Webサーバーのログ
- public-Webサーバーのルートフォルダー。ここに静的コンテンツがあります。
- スクリプト-開発に非常に役立つスクリプト
- テスト-テスト
- tmp-ユーザーセッションとpidファイルはデフォルトでここに保存されます
- ベンダー-ここに使用するプラグインがあります
Webサーバーを起動して、アプリケーションが動作していることを確認します。 アプリケーションフォルダーに移動し、レールに付属しているWebサーバーを実行します。
<code class = 'sh' lang = 'sh'> $> ruby script / server
行頭のルビーはWindowsでのみ記述する必要があります。</ code>
http:// localhost:3000 /お気に入りのブラウザでこのリンクを開いて、「ようこそ」ページを見てください。すべてが順調です。簡単なアプリケーションを作成します。
どのアプリケーションを書く価値がありますか?
事実、人間のマークアップ(Wiki、Markdown、Textile)でテキストを書くことができますが、habrはテキストのマークアップにhtmlのみをサポートします。テキストを書きたいときにhtmlを書くのは不便です。
したがって、アプリケーションはテキストをhtmlでフォーマットします!
最初は非常にシンプルで、2ページしかかかりません。最初のページではテキストを入力でき、2番目のページではフォーマットされた形式で表示して、結果のhtmlをコピーできます(ハブに投稿するには:)
コードを書き始めます。
怠け者のため
に、アプリケーションのソースコードをレイアウトしましたが、それでも自分でコードを書く方が面白いです。
MVCパターンがWebアプリケーションアーキテクチャの事実上の標準になったことは誰にとっても秘密ではないと思います。 Railsも例外ではありません。アプリケーションはモデル、ビュー、コントローラーで構成されています。
現在および将来、すべての日常的な作業を行うスクリプトを使用します。最初に知るのは
generate
、コードを生成します。
<code class = 'sh' lang = 'sh'> 2つのメソッド(ビュー)でコントローラー(formatting_controllerと呼びます)を作成します。
input-テキストを入力するため
プレビュー-フォーマットされたテキストを表示します
$> ruby script /コントローラーのフォーマット入力プレビューを生成</ code>
その結果、レールはいくつかのファイルを生成しましたが、そのうち次のものが興味深いものになりました。
<code class = 'sh' lang = 'sh'> app / controllers / format_controller.rb
アプリ/ビュー/フォーマット/ input.rhtml
app / views / format / preview.rhtml </ code>
生成されたページをブラウザで見る方法は?
http:// localhost:3000 /フォーマット/入力http:// localhost:3000 /フォーマット/プレビューなぜそのようなURLなのか?
ルーティングモジュールは、レール内のURLの表示を担当します。ファイル内で構成できます。
<code class = 'sh' lang = 'sh'> config / routes.rb </ code>
ルーティングの詳細については説明しませんが、これについては別の記事を書くことができます。 次に、これらの2行を追加して、その目的を説明します。
<code class = 'ruby' lang = 'ruby'> map.connect ''、:controller => 'formatting' ,: action => 'input' ,: conditions => {:method =>:get}
map.preview ''、:controller => 'formatting' ,: action => 'preview' ,: conditions => {:method =>:post} </ code>
接続とプレビューはメソッド呼び出しです。 最初の引数はパスです。この場合、パスは空です。つまり、これらはサイトのルートのルールです。 2番目の引数は、どのメソッドをどのコントローラーで呼び出す必要があるか、およびどのような条件下で必要かを含むハッシュです。 つまり、サイトルートのHTTP GETが到着すると入力メソッドが呼び出され、HTTP POSTの場合はプレビューします。
接続呼び出しはプレビューの呼び出しとどのように違いますか?
接続は、ルーターのルールを追加するメソッドですが、プレビューメソッドは存在しません。
これはRubyの一般的なことです。メソッドが存在しない場合、
method_missing
が
method_missing
れ、
method_missing
便利なことができます。 この場合、次のことが起こります。
- connectを呼び出したかのように、ルーターテーブルにルールが追加されます。
preview_url
メソッドが作成され、コントローラーとビューで使用できます。これは名前付きurlと呼ばれます
ここで、このページの代わりに
input
メソッドが呼び出されるように
public/index.html
を削除または名前変更し、実際に呼び出されることを確認する必要があります。
視聴者がもっと便利なものを表示するときです。
input.rhtml
から始めましょう。これを次のコードに置き換えます。
<code class = 'ruby' lang = 'ruby'> <%form_tag preview_url do%>
<%= text_area_tag:text、@source ,: size => '120x25'%>
<%= submit_tag 'プレビュー'%>
<%end%> </ code>
結果は、フォーム内のテキストボックスと送信用のボタンが
preview_url
にアップロードされるフォームを持つページです。 次に、入力したテキストの書式設定に取りかかりましょう。
最初に、入力したテキストのフォーマット方法を決定する必要があります。 この記事を
マークダウンとしてフォーマットしますが、変更のために
テキスタイルを追加することにしました。
テキスタイルと
マークダウンをサポートするには、
RedClothと
Marukuをインストールする必要があり
ます 。
<code> $> gem install redcloth maruku </ code>
次に、テキストをフォーマットするコードを記述する必要があります。 残念ながら、Haberがコードをカットしているため、記事にコードを配置することはできません。したがって、
formatting_controller.rb
を別のウィンドウで開いて、読みながら切り替えてください。 なに?
- require-必要なgem(モジュール、パッケージ)を接続します
before_filter
アクションが呼び出される前に呼び出されるset_supported_formats
メソッドをフィルターset_supported_formats
追加しset_supported_formats
params
リクエストで渡されたパラメーターを持つハッシュ
set_supported_formats
は何に
set_supported_formats
、これらすべての
@
どういう意味ですか?
先頭に
@
記号が付いた変数は、メソッドが呼び出されるオブジェクト、つまりコントローラーの変数です。 実際には、ビューは独自の変数であるかのように、コントローラーの変数にアクセスできるため、通常はコントローラーで変数が設定され、ビューで変数がレンダリングに使用されます。
preview.rhtml
、テキストを編集できるようにinput.rhtml
input.rhtml
もレンダリングし
input.rhtml
したがって、両方のビューで
@supported_formats
が必要になります。コードを複製するよりもフィルターを追加することをお
@supported_formats
します。
書式タイプの選択を
input.rhtml
に追加することは残り
input.rhtml
。
<code> <%= select_tag:selected_format、options_for_select(@supported_formats、@selected_format)%> </ code>
そして、
preview.rhtml
を再度書きます。ここにコードを配置できません(divがあり、pre内にあるかどうかは関係ありません:)。
ページは3つのブロックに分かれています。
preview
-書式設定されたテキストを表示しますsource
ソーステキストを含むフォームformated_text
フォーマットされたテキストを持つフィールド
1つの小さな詳細が残ります。結果のページは「Wellformed XHTML」ではなく、テキスト入力フォームは曲がって見えます。 ブラウザが適切にフォーマットされたページを受信するようにする必要があります。
doctype
、
html
、
head
、
body
が必要です
doctype
一般的にはすべてが必要であり、フォームをcssでとかします。
ビューをレンダリングした結果を挿入できるページテンプレートが必要です。これはrailsで、
layout
と呼ばれ
layout
。
あなたがする必要があるのは、
formatting.rhtml
を
app/views/layouts
追加することだけです。
入力フォーム
style.css
もう少し良く構成して、
public/stylesheets
入れましょう。
今日は以上です。最初の部分は終わりです。
厳密に判断しないでください。非常に長い間、私はロシア語で、Rubyでますます書いていませんでした:)
確かに、私が混乱した説明からは、多くの質問があることを理解している記事を調べたので、あまり明確ではありません。 たとえば、
options_for_select
または
options_for_select
とは何
options_for_select
。 それに本当に興味がある人:
markdownでマークされたテキストがどのように見えるかを見たい人
は、記事のソースを見ることができます。
次に何ができますか?
- 私が触れていない主なものはテストです、私たちはそれらから始めます
- このような単純なアプリケーションには2ページが多すぎるため、1ページに減らす必要があります。 これを行うには、AJAXに精通し、レールでjavascriptを操作する方法を学ぶ必要があります。
- 私はリンクを心配し、それらすべてをクリックしましたが、1つは死んでいることが判明しました。もうクリックする気はありません。クリックしないようにする必要があります。
- さらに、私はスペルが心配です、どのサービスが通常スペルをチェックできるか教えてください、まだ行っていない場合はレールに固定するのが面白いでしょう)
- 2番目の記事が登場すると、ソースをデスクトップに保存するのが面倒になります(既に雑然としています:)ので、記事のカタログを作成する必要があります。 同時に、RESTとは何か、それがレールとどのように関係するのかを学びます。
AjaxScaffoldの使用方法の説明がない投稿に気づいたので、必要に応じてActiveScaffoldに Webベースのディレクトリを作成できます - この時点で共著者が現れて、記事の共同編集を整理する方法に慣れることを本当に望んでいます。 レール上でのユーザー認証の実行方法、記事をマルチバージョン化する方法、競合するエントリーから自分を守る方法を学びます。