Ruby on Railsのソースを表示
←
Ruby on Rails
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、以下のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
使えるようにするまでは、[[Mountain LionでRuby On Railsを使えるようにするまで]]のとおり。いまのところ、不具合なく動いています。 ==rbenv== <pre> $ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv $ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build </pre> *[http://memo.yomukaku.net/entries/ApoFwmf rbenvで複数のバージョンのrubyを使用する環境を整える - memo.yomukaku.net] *[http://qiita.com/makoto_kw/items/cc73b628c9ef039f6e6f rbenvでRubyのバージョンを指定する方法 - Qiita] ==インストール== <pre> $ rbevn install -l (インストール可能なバージョンが表示される) $ rbenv install 2.1.1 $ rbenv rehash $ rbenv versions (インストール済みのバージョンが表示される) $ rbenv global (現在globalなバージョンが表示される) $ rbenv global 2.1.1 (インストールしたバージョンをglobalにする) $ gem -i rbenv-rehash (インストールしたり、削除した後にrbenv-rehashする必要があるのを自動的に行なってくれる。) </pre> ===エラーが出たとき=== <code>rbenv install 2.1.1</code>で次のようなエラーが出ました。 <pre> BUILD FAILED (CentOS release 6.5 (Final) using ruby-build 20140926) Inspect or clean up the working tree at /tmp/ruby-build.20141008005426.27139 Results logged to /tmp/ruby-build.20141008005426.27139.log Last 10 log lines: rake 10.1.0 rdoc 4.1.0 test-unit 2.1.1.0 installing rdoc: /home/tara.ttm/.rbenv/versions/2.1.1/share/ri/2.1.0/system installing capi-docs: /home/tara.ttm/.rbenv/versions/2.1.1/share/doc/ruby The Ruby openssl extension was not compiled. Missing the OpenSSL lib? Configure options used: --prefix=/home/tara.ttm/.rbenv/versions/2.1.1 LDFLAGS=-L/home/tara.ttm/.rbenv/versions/2.1.1/lib CPPFLAGS=-I/home/tara.ttm/.rbenv/versions/2.1.1/include </pre> <code>OpenSSL lib</code>がないようなので、<code>sudo yum install openssl-devel</code>でインストールして再度試すと、うまくいきました。 [http://vps.fean.info/rails/ Ruby on RailsをVPSで動かす] ==アップグレード== <pre> $ cd ~/.rbenv $ git pull origin master $ cd ~/.rbenv/plugins/ruby-build $ git pull origin master $ rbenv install -l $ rbenv install 2.1.1 $ rbenv versions $ rbenv shell バージョン $ gem install rails </pre> *[https://gist.github.com/mochiz/4736183 rbenvとruby-buildでRuby環境を最新に保つ] *[http://qiita.com/yahsan2/items/afbabacfd414d13a1504 ruby-build - rbenv install -l で最新バージョンが出ない時の対処 - Qiita] ==webpackerのインストール== ===yarnのインストール=== <pre> $ brew install yarn </pre> ===webpackerのインストール=== <pre> $ rails webpacker:install </pre> ===link=== *[https://qiita.com/NaokiIshimura/items/8203f74f8dfd5f6b87a0 Rails6 開発時につまづきそうな webpacker, yarn 関係のエラーと解決方法 - Qiita] *[https://yarnpkg.com/lang/ja/docs/install/#mac-stable インストール | Yarn] ==Rails アプリケーションを作る== <ol> <li>アプリケーションを作る <pre> $ rails new [アプリケーション名] -d mysql </pre> <li>scaffoldを生成 <pre> $ rails g scaffold [モデル名単数形] [カラム名1]:[メソッド名1] [カラム名2]:[メソッド名2] ..... </pre> 例 <pre> $ rails g scaffold interested id:integer url:string title:string tag:string lastmodified:datetime </pre> データ型 <pre> :primary_key :integer :float :string :text :datetime :timestamp :date :time :boolean :binary </pre> *[http://strix01.blogspot.jp/2014/01/railsmysqldouble.html strix01: rails+MySQLでdouble型カラムを扱うモンキーパッチ] <li>migrateファイルを編集 <pre> class CreateImages < ActiveRecord::Migration def change create_table :images do |t| t.string :filename t.string :url t.text :memo t.integer :noshow t.binary :photo, :limit => 16777215 t.timestamps end end end </pre> <li>config/database.ymlを編集 <li>migrateを実行 <pre> $ rake db:create $ rake db:migrate </pre> <li>config/routes.rbを編集。上記のrails g scaffoldの例なら、 <pre> InterestedIn::Application.routes.draw do resources :interesteds end </pre> を <pre> InterestedIn::Application.routes.draw do resources :interesteds root :to =>"interesteds#index" end </pre> と変更する。 <li>Railsコマンドでgenerateしたのを取り消す。上記でgenerateした場合は、 <pre> $ rails destroy scaffold interested </pre> <li>有効なルートを表示する <pre> $ rake routes </pre> </ol> ==1対1の参照== ===Modelファイルの編集=== 例えば、interestedという名のモデルからbookmarkという名のモデルを参照する場合。 <code>optiona: true</code>は、belongs_toの外部キーのnilを許可するというもの。 *https://blog.ryskit.com/entry/2018/01/27/195442 #app/models/interested.rb <pre> class Interested < ActiveRecord::Base belongs_to :bookmark, optional: true end </pre> #app/models/bookmark.rb <pre> class Bookmark < ActiveRecord::Base has_one :interested end </pre> ===Controlファイルの編集=== #app/controllers/interested.rb <pre> def index @interesteds = Interested.order("id DESC").limit(10) @bookmarks = Bookmark end </pre> ===Viewファイルの例=== #app/views/interesteds/index.html.erb <pre> <%= link_to interested.bookmark.title, bookmark_path(interested.bookmark_id) %> </pre> bookmarkモデル内にtitleがあるなら、<code>interested.bookmark.title</code>で、参照する。 参照先のbookmarkへのパスは、<code>bookmark_path(interested.bookmark_id)</code> *[http://blog.digital-squad.net/article/278843296.html belongs_toとhas_one の違い|WEBデザイン Tips] *[http://www.stonedot.com/lecture6.html ActiveRecordの関連のすべて ー StoneDot の Ruby on Rails 講座] ==子レコードの作成== *[https://qiita.com/shizuma/items/5bfcf6c1e855b959e135Rails 複数の子レコードの作成・更新を自在に扱う (accepts_nested_attributes_for) - Qiita] *[https://qiita.com/ftyabu/items/cae912b211e985d74d58 【Rails】複数のレコードを作成する。modelの関係性によって異なるform_for / fields_forの使い方 - Qiita] *[https://railsguides.jp/association_basics.html Active Record の関連付け - Railsガイド] ==リンクを作成する== <pre>link_to("表示する文字",url)</pre> 例えば、モデル名がinterestedでデータベースのカラム名がtitle、urlの場合(この認識で正しいのか?)、 <pre>link_to( interested.title ,interested.url) </pre> 3番目の引数で<a>タグの属性も指定できる。 <pre>link_to( interested.title ,interested.url,{:target=>"_blank"})</pre> パラメーターで変数を使うときには、<code>#{変数名}</code>と記載する。 <pre><%= link_to '表示しない', "", :onclick => "noshow(#{image.id})" %></pre> ===turbo-link=== リンク先でturbo-linkが機能しないようにする。 <pre> <%= link_to 'Back', members_path, :class=>"btn btn-default", 'data-no-turbolink'=>"true" %> </pre> 又は、 <pre> <%= link_to('Back', members_path, data: { no_turbolink: true } %> </pre> ==development モードのときに404エラーのページなどを表示させる== developmentモードのときに存在しないurlを入力した時には、routing errorのページが表示されるのですが、404エラーのページを表示させる方法 <code>config/environments/development.rb</code>を次にように変更する。 <pre> config.consider_all_requests_local = true </pre> を <pre> config.consider_all_requests_local = false </pre> に変更する。 ==カラムを追加する== #クラス名は AddFooToBarsとします。Fooは追加するカラム名Barsはテーブル名です。ここのFooはカラム名と違っても構いません。 #カラム名:データ型 の部分、カラム名は追加するカラム名、データ型はinteger,stringなどです。 <pre>rails g migration クラス名 カラム名:データ型( カラム名:データ型)</pre> <pre>rails g migration AddFooToBars foo:integer</pre> <pre>rake db:migrate</pre> ===データの容量の指定=== 例えば、データ型の<code>binary</code>には、<code>blob</code>,<code>mediumblob</code>,<code>longblob</code>と三種類あるます。特に指定しないと、<code>blob</code>になります。[[MySQL#text.2Cmediumtext.2Clongtext.E3.81.AE.E5.AE.B9.E9.87.8F|容量]]を指定することで、<code>mediumblob</code>などが自動的に設定されるようです。 <pre> class AddPhotoToImages < ActiveRecord::Migration def change add_column :images, :photo, :binary , :limit => 16777215 end end </pre> <pre class="inline">rake db:migrate</pre>した結果は次のとおりです。 <pre> +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | (中略) | photo | mediumblob | YES | | NULL | | +------------+--------------+------+-----+---------+----------------+ </pre> ==カラムの削除== カラムを削除する場合には次のようにします。 <pre>rails g migration RemoveFooFromBars foo:string</pre> ===Link=== *[http://www.rubylife.jp/rails/model/index7.html 新しいマイグレーションを追加してテーブルを変更 - Ruby on Rails入門] *[http://www.re-labo.com/hiroro-blog/2009/03/rake-db.html rake dbコマンド一覧 - 戦うSEひろろのブログ] ==カラムの変更== ===カラムの型を変更=== テーブル名<code>logs</code>のカラム<code>time</code>の型が<code>time</code>だったのを<code>datetime</code>に変更する場合。 <pre> rails g migration ChangeTypeTimeDatetime </pre> <code>ChangeTypeTimeDatetime</code>の部分は重複しないような名前であれば大丈夫だと思う。 <pre> Class AddIndexToUrl < ActiveRecord::Migration def change end end </pre> を <pre> Class AddIndexToUrl < ActiveRecord::Migration def change change_column :logs, :time, :datetime end end </pre> <code>change_column :テーブル名, :カラム名, :変更後の型</code> ===インデックスの追加=== テーブル名<code>images</code>、カラム名<code>url</code>に、ユニークのインデックスを追加する。 <pre> rails g migration AddIndexToUrl </pre> <code>/db/migrate/************_add_index_to_url.rb</code>を編集する。 <pre> Class AddIndexToUrl < ActiveRecord::Migration def change end end </pre> に <Pre> Class AddIndexToUrl < ActiveRecord::Migration def change add_index :images, :url, :unique => true end end </pre> インデックスだけを追加するのであれば、 <pre> Class AddIndexToUrl < ActiveRecord::Migration def change add_index :images, :url end end </pre> *[http://railsdoc.com/migration マイグレーション(migration) - Railsドキュメント] *[http://railsdoc.com/references/change_column change_column - リファレンス - Railsドキュメント] ==layouts/application.html.erb以外のレイアウトを使う== モデル名 article のshowのときだけ別のレイアウト(article_show.html.erb)を使いたかったので, controllers/articles_controller.rbの <pre> def show end </pre> を <pre> def show respond_to do |format| format.html { render :layout => "article_show"} end end </pre> に変更した。 ==routes.rb== <code>lastdays</code>という名称のコントローラーの<code>index</code>アクションをルートに指定する場合。 <pre> Rails.application.routes.draw do (中略) root 'lastdays#index' (中略) end </pre> *[http://akkunchoi.github.io/rails3-routes.html Rails3 routes.rb まとめ | akkunchoi@github] *[http://railsdoc.com/routes ルーティング(routes) - Railsドキュメント] ==Twitter Bootstrapを使う== ===Bootstrap5=== * [https://www.sejuku.net/blog/11043 音速開発!RailsでBootstrapを導入する方法〜Less、Sass、Scss〜 | 侍エンジニアブログ] * [https://qiita.com/kay-adamof/items/59c8a5dd8816660fc02d Rails の bundle install 時に出会った therubyracer のエラーと、その解決方法 - Qiita] ===Bootstrap3=== <code>Gemfile</code>に <pre> gem "therubyracer" gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS gem "twitter-bootstrap-rails" </pre> を追加して、 <pre> > bundle install (中略) > rails generate bootstrap:install less (略) $ rails g bootstrap:layout [LAYOUT_NAME] [*fixed or fluid] </pre> 例 fixedは1行、fluidは2行のことだと思う、、、 <pre> $ rails g bootstrap:layout application fixed </pre> <pre> $ rails g bootstrap:themed [RESOURCE_NAME] </pre> 例 <pre> $ rails g bootstrap:themed interesteds </pre> *[https://github.com/seyhunak/twitter-bootstrap-rails GitHub - seyhunak/twitter-bootstrap-rails: Twitter Bootstrap for Rails 5 - 4.x Asset Pipeline] *[https://github.com/decioferreira/bootstrap-generators decioferreira/bootstrap-generators · GitHub] *[https://github.com/benjamincanac/bootstrap3-rails benjamincanac/bootstrap3-rails · GitHub] *[http://rubygems.org/gems/bootstrap3-rails bootstrap3-rails | RubyGems.org | your community gem host] ===ボタンを単独で使う。=== <pre> <%= button_tag "get size",:onclick => "getsize()" ,:class=>"btn btn-default" %> </pre> ===form=== ====f.select==== *[http://railsdoc.com/references/select select - リファレンス - Railsドキュメント] <pre> f.select(プロパティ名, タグの情報 [, オプション]) </pre> (例) <pre> f.select(:status, {"後で"=>"later","確認済み"=>"confirmed"}, {:include_blank => true, :selected => "#{member.status}"}, :class => "form-control" ) </pre> オプションがない場合は、 <pre>f.select(プロパティ名, タグの情報, {}, :class=>"form-control")</pre> としないと、Bootstrapが適用されていない普通の<code>select</code>が表示される。 ===Link=== *[http://twitter.github.com/bootstrap/index.html Twitter Bootstrap] *[https://github.com/seyhunak/twitter-bootstrap-rails seyhunak/twitter-bootstrap-rails · GitHub] *[http://www.slideshare.net/mackato/twitter-bootstrap-on-rails Twitter bootstrap on rails] *[http://d.hatena.ne.jp/CortYuming/20120105/p2 続『5分でRails3アプリ』をやってみた - 『Twitter Bootstrap』で見た目をサクッと変えてみた - 牌語備忘録 - pygo] *[http://railscasts.com/episodes/328-twitter-bootstrap-basics?language=ja&view=asciicast #328 Twitter Bootstrap Basics - RailsCasts] *[https://github.com/thomaspark/bootswatch thomaspark/bootswatch · GitHub] ===Bootstrap2=== <ol> <li>Gemfileに追加 <pre>gem "twitter-bootstrap-rails", :group => :assets</pre> <li>Terminal</li> <pre> $ bundle install (略) $ rails g bootstrap:install (略) $ rails g bootstrap:layout [LAYOUT_NAME] [*fixed or fluid] </pre> 例 fixedは1行、fluidは2行のことだと思う、、、 <pre> $ rails g bootstrap:layout application fixed </pre> <pre> $ rails g bootstrap:themed [RESOURCE_NAME] </pre> 例 <pre> $ rails g bootstrap:themed interesteds </pre> <li>後始末 ナビバーがページと重なっているときは、 bootstrap_and_overrides.css.lessにpadding-top:60px;を追加して記載。 <pre> body { padding-top:60px; } </pre> </ol> ==will_paginateを使う== will_paginateをインストールしてから、bootstrap-will_paginateをインストールします。 <code><%= will_paginate @collection, renderer: BootstrapPagination::Rails %></code>と書くようにありますが、<code><%= will_paginate @collection %></code>のみで動作しました。 *[https://github.com/mislav/will_paginate mislav/will_paginate · GitHub] *[https://github.com/yrgoldteeth/bootstrap-will_paginate yrgoldteeth/bootstrap-will_paginate · GitHub] *[https://github.com/mislav/will_paginate/wiki Home · mislav/will_paginate Wiki · GitHub] ==表示を整える== *[http://allabout.co.jp/gm/gc/23913/ 属性セレクタで、スタイルシートを柔軟に! [ホームページ作成] All About] ==RSSフィードを実装する== *[http://programmer-jobs.blogspot.jp/2013/05/ruby-on-railsrss.html Ruby on Railsで、RSSフィード 一言多いプログラマーの独り言] *[http://ntech.hatenadiary.com/entry/2014/08/05/054909 【Rails4 入門】RSSフィードを作成する - NTECH] ==文字化けへの対応== <code>rails Mysql2::Error: Incorrect string value:</code> 文字列に絵文字が使われていると発生するようです。 <code>database.yml</code>を <pre> encoding: utf8mb4 collation: utf8mb4_unicode_ci </pre> として回避できました。 [https://stackoverflow.com/questions/38656270/rails-how-to-fix-convert-incorrect-string-value encoding: utf8mb4 collation: utf8mb4_unicode_ci] ==Production モードで起動する== *[http://www.workabroad.jp/tech/1116 Rails & Passenger を Production(本番)モードで公開する時 | Workabroad.jp] *[http://d.hatena.ne.jp/piggery/20120812 productionモードでmigrateする場合] ==Link== *[http://www.rubylife.jp/rails/ Ruby on Rails入門] *[https://www.ruby-toolbox.com/ The Ruby Toolbox - Know Your Options!] [[Category:プログラム]] [[Category:Ruby On Rails]]
Ruby on Rails
に戻る。
案内メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWikiについてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報