Ruby on Rails。 インストール、構成、開始

なぜだ。



1週間前に自分で読みたいこの小さな記事では、RoRでアプリケーションをゼロから作成したい場合に必要なものをすべて集めようとしました。 つまり、最初のアプリケーションをインストール、構成、作成するために必要な最小限の手順を説明する必要はありません。 ) 私自身、2週間目はRoRを勉強していますので、厳密に判断しないでください)。



設置



簡単かつ迅速にrorはrvmを介してrvm.ioでインストールされます。



>\curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enabled
      
      







rvmを実行します。



 >source /___*/.rvm/scripts/rvm
      
      





*今後は$ HOME。

その後、行は$ HOME / .bash_profileに表示されます:



 [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
      
      







そして、あなたがコンソールを開くたびに、rvmがロードされますが、これは私には起こりませんでした-私は$ HOME / bashrcで書かなければなりませんでした:



 . ~/.bash_profile
      
      







これですべてが確実に正常になります。

ハックの必要なバージョン(ほとんどの場合、最新バージョン)をインストールします(それらの数と違いはここで確認できます-http://www.ruby-lang.org)。

 >rvm install 1.9.3
      
      





成功チェック

 >ruby -v
      
      





次のようなより詳細な情報を返す必要があります

 ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-linux].
      
      





インストールプロセス中に、誤っていくつかのバージョンをインストールしたため、後で問題が発生しました)。 次のように、Rubyのインストール済みバージョンのリストを見ることができます。

> rvmリスト

複数のバージョンがある場合、現在のバージョンには「=>」、デフォルト-「*」、現在およびデフォルトの「= *」がマークされます。 使用する目的のバージョンに変更できます。

 >rvm use ruby-1.9.2-p320 (  )
      
      





rubのデフォルトバージョンを変更するには、次のように記述します。

 >rvm use ruby-1.9.2-p320 --default
      
      









プロジェクトを作成します。



これで、プロジェクトの作成に直接進むことができます。 フォルダー$ HOME / ROR / ticketを作成し、そのフォルダーに移動して、以下を実行します。

 >sudo gem install bundler >rails new tickets
      
      





プロジェクトを作成すると、指定されたフォルダー内のすべての必要なディレクトリ(app、config、db、logなど)と構成ファイルが生成されます。 小規模なテストプロジェクトを機能させるには、私の場合、PostgreSQLデータベース、いくつかのgem(ライブラリ)、およびRailsサーバーが実行されている必要があります。

サーバーを起動するには、作成したプロジェクトを含むフォルダーのルートからコマンドを実行する必要があります。

 >rails s -p 3000
      
      





ここで、sはサーバー(サーバー)を起動するコマンドで、-p 3000はプロジェクトを使用できるポート番号です。 コンソールを開始するには、次を入力します。

 >rails c
      
      





cはコンソールの略です

入力すると、すべてのチームのリストを表示できます

>レール--h。 localhost :3000にプロジェクトの開始ページが表示されます。 また、他のプロジェクトの任意の数のサーバーを、占有されていない他のポートで実行することもできます。 作業中。 ある時点で、何らかの理由でサーバーの起動に問題が発生しました-サーバーが既に実行されているというエラーが発行されました-それを解決するには、ファイル$ HOME / ROR / ticket / config / tmp / pids / server.pidを削除するだけですサーバーを再起動します。



データベース。



postgresで作業するには、Gemfileファイルの最後に行を追加します。この行はプロジェクトのルートに配置する必要があります

> gem 'pg'

ファイルを保存して

 >bundle install
      
      





Gemfileに変更を加えるたびにそれを行い、サーバーを再起動します。 ここに戻らないように、すぐに追加して

>プレゼンテーションテンプレートのマークアップ(使い慣れた後)に便利なgem 'haml-rails'。 ここで、database.ymlファイルのpostgresへの接続の属性を編集します。 $ HOME / ROR / ticket / config /フォルダーにあり、次のようなブロックが含まれている必要があります。

 development: host: localhost adapter: postgresql encoding: unicode database: tickets pool: 5 username: tickets
      
      





適切なユーザー名とデータベース名で、それぞれチケットとチケットがあります)。



すべての準備が完了し、モデル、コントローラー、ビューの作成を開始できるようです。



モデル。



モデルを作成します。

 >rails g model user
      
      





ここで、gはgenerateの略語です

モデルの名前を単数形で記述します-データベースのテーブルは複数形になります。 このコマンドは、$ HOME / ROR / ticket / app / models / user.rbおよび$ HOME / ROR / ticket / app / db / migrate / 20130425081208_create_users.rbにモデルと移行ファイルを作成します。 すべてのコントローラーおよびモデルファイルには、拡張子.rb、views-.html.haml(この例ではhamlを使用)が付いています。 移行を通じて、データベース内のテーブルを使用して作業をコンソールで管理します。これは非常に便利です(もう一度慣れると)。たとえば、アプリケーションを別のサーバーに簡単に転送することもできます。 必須フィールドを追加します。



 class CreateUsers < ActiveRecord::Migration def up create_table :users do |t| t.string :name, null: false t.boolean :role, null: false, default: false t.datetime :reg_date t.timestamps end end def down drop_table :users end end
      
      







アップとダウンの2つのメソッドを作成します。これらは、移行を操作する機能によってデフォルトで使用されます。それぞれ、テーブルを作成および削除します。 データ型の名前は、使用するデータベースによって異なります。 主キーはデフォルトで作成され、idと呼ばれますが、明示的に設定することもできます。

 create_table :users, :primary_key => :users_id do |t|
      
      





主キーをまったく作成したくない場合は、次のように記述します。

 create_table :users, :id => false do |t|
      
      





コンソールに保存して書き込みます。

 >rake db:migrate
      
      





このコマンドの結果として、$ HOME / ROR / ticket / app / db / migrate /ディレクトリ内の移行ファイルから失敗したすべてのメソッドが実行されます。 テーブルの状態に関するすべての情報は、ファイル$ HOME / ROR / ticket / app / db / shema.rbにあります。

 >rake db:rollback
      
      





最後に実行された移行のdownメソッドを開始します。その結果、テーブルがデータベースから削除されます。 さらに多くの移行をロールバックするには、rollbackコマンドにSTEPパラメーターを追加する必要があります。

 >rake db:rollback STEP=3
      
      





このコマンドは、最後の3つの移行をロールバックします。 コンソールですべての移行のステータスを表示します。

 >rake db:migrate:status
      
      





特定の移行から特定のメソッドを実行する必要がある場合は、VERSIONパラメーターを追加します。

 >rake db:migrate:up VERSION=000001
      
      





モデルファイル($ HOME / ROR / ticket / app / models / user.rb)では、これまで1つのことだけを行う必要があります-私が理解しているように、セキュリティの目的で、コントローラーから変更できるテーブルフィールドを定義するためです)。 これを行うには、次のように書き込みます。



 class User < ActiveRecord::Base attr_accessible :name, :role end
      
      







ちなみに、haml構文はタブに非常に敏感です-私が使用しているエディター-Sublime Textでそれらを非常によく追跡できます。



アプリケーションが動作していない間、作成されたすべてのテーブルが実際に作成され、必要に応じて機能することを確認するには、コンソールコンソールを使用できます。

 >user = User.new(name:"Test",role:"true")
      
      





このコマンドはテーブルに書き込みませんが、すべての属性が設定されたメモリにruyiオブジェクトを作成します。 次に、メモを作成しましょう。

 >user.save
      
      





成功した場合、trueを返します。 レコードは1つのコマンドで作成できます-create:

 >User.create(name:"Test",role:"true")
      
      





データベースにオブジェクトがあるかどうかを確認するには、findを使用できます。

 >User.find(1)
      
      





オブジェクトまたはエラーを返します: "ActiveRecord :: RecordNotFound:ID = 1のユーザーが見つかりませんでした"、およびデータベース自体に対して生成されたsql-query。

特定のフィールドを検索できます:

 >User.find_by_name("Test")
      
      





最初に便利になると思われる、さらに便利なメソッドをいくつか紹介します。

> User.firstとUser.lastはそれぞれテーブルの最初と最後のレコードを返し、User.allはテーブル内のすべてのオブジェクトの配列を返します。



コントローラー



コントローラーを作成します。

 >rails g controller users
      
      





このコマンドの結果、コントローラーファイルが作成されます:$ HOME / ROR / ticket / app / controllers / users_controller.rbおよびビュー用のディレクトリ:

$ HOME / ROR /チケット/アプリ/ビュー/ユーザー/。 各コントローラーメソッドには、このフォルダーに同じ名前のビューがあります。 手動で作成するか、すぐにコントローラーを作成できます。

 >rails g controller users index,list
      
      





この場合、プレゼンテーションファイルは$ HOME / ROR / ticket / app / views / users /フォルダーに自動的に作成され、(hamlを忘れていない場合)index.html.hamlとlist.html.hamlが呼び出されます。 次のようにコントローラーを削除できます。

 >rails d controller users
      
      





ここで、dはdestroyの略語です

デフォルトのインデックス方式の定義はオプションです。 ユーザーコントローラーの内容は次のとおりです。



 class UsersController < ApplicationController def list @users_list=User.all end end
      
      







Users_listには、コンソールから既に追加したユーザーオブジェクトの配列が含まれます。「@」は、変数がテンプレートに渡されることを意味します。



提出。



ビューを作成したら、正しいディレクトリに手を入れてこのファイルを作成しました。

$ HOME / ROR /チケット/アプリ/ビュー/ユーザー/ list.html.haml

HAMLのドキュメントはこちら(http://haml.info/tutorial.html)で読むことができますが、現時点では最低限の知識が必要です。たとえば、開始タグと終了タグの代わりに「%タグ」を使用します。 つまり、%htmlを含むテンプレートをレンダリングした後、
 <html></html>
      
      



。 ネストレベルは集計によって設定され、タグの属性は中括弧で「ハッシュのように」記述されます。
  %td{colspan=>"2"}
      
      



になります
 <td colspan="2"></td>
      
      



、および内容はスペースで区切られます:%tdテスト。 したがって、ビューの内容は次のとおりです。



 %table{:border=>"1"} %tr %td  %td  - @users_list.each do |users| %tr %td= users.name %td %input{:type=>"checkbox",:name=>"role_#{users.id}",:checked=>users.role} %br
      
      







ハイフンは、テンプレート内の実行可能コードです。 ここでは、オブジェクトの配列を調べて、ループ内のメソッド(名前フィールド、ロールフィールド、IDフィールド)を表示します。



すべてのビューは、$ HOME / ROR / ticket / app / views / layouts / application.html.hamlにあるメインテンプレートで「ラップ」されます。

その中にあるものをすべて削除し、できるだけ単純にします。



 !!! %html{:lang => "en"} %head %title Test %body =yield
      
      







生成されたすべてのテンプレートの内容は、= yieldに置き換えられます。 主なことは、ネストのレベルを間違えないことです。最初は非常に悩みました。



ルート



ルート設定ファイル(url)の編集-routes.rbが1つだけ残っています。 これは、$ HOME / ROR / ticket / config /にあります。 プロジェクトのすべてのルートを説明しています。 これで、エントリは2つだけになります。



 Tickets::Application.routes.draw do root :to => "users#index" #GET Urls get "users/list" end
      
      







これは、「メイン」ページへのルートパス(インデックスメソッドがコントローラーで定義されていない場合でも、/ users / index.html.hamlテンプレートのコンテンツが表示されます)およびユーザーリスト出力ページへのパスです。 メソッドへの投稿リクエストがある場合は、次のように記述する必要があります。

「ユーザー/追加」を投稿してください。

これですべてが機能するはずです)



All Articles