One struggle more

情報系学生の戦闘記録

Railsにダウンロード機能

Railsにダウンロード機能を加えてみた。

今回はアップロードしダウンロードするまでをRailsを用いて実現しましょう。

まずはターミナルで以下のコマンドをうち、ファイルを作りましょう。

$ rails new Sampledownload   

次にScaffoldでCRUDを実装しDBに反映させよう。

$ rails g scaffold Sample image:binary

$ rails db:migrate

次に画像をアップロードし表示する準備をします。 Gemfileに今回はcarrierwaveを記述しインストールします。

gem "carrierwave" 

$ bundle insstall

次にUploaderクラスの作成

$ rails g uploader image

次にmodelクラスへ作成したUploaderを設定します。

今回はsample.rbに以下のコードを書き込みます。

  mount_uploader :image,ImageUploader
次にformのビューを変更しましょう。

今回はルーティングの設定は行わないので$ rails routesで確認しながら作業をおこなってください。 現状だとsamples/_form.html.erbは以下の通りになっており

  <div class="field">
    <%= form.label :image %>
    <%= form.text_field :image, id: :sample_image %>
  </div>

以下のように変更します。

  <div class="field">
    <%= form.label :image %>
    <%= form.file_field :image, id: :sample_image %>
  </div>
次に画像を表示させるためのビューを変更しましょう。

では、samples/show.html.erbをいじっていきます。 初期状態を

<p>
  <strong>Image:</strong>
  <%= @sample.image %>
</p>

以下のように変える。(表示するにはimage_tagを用いる)

<p>
  <strong>Image:</strong>
  <%=image_tag @sample.image %>
</p>
ではでは、最後にダウンロード機能を加えましょう。

app/controllers/samples_controller.rbファイルに以下のコードを加えます。

  def download
      send_file(@sample.path)
  end

さらにbefore_actionに:downloadと加えましょう。

  before_action :set_sample, only: [:show, :edit, :update, :destroy,:download]

そしてconfig/routes.rbを以下のように変更します。

     member do
       get "download"
     end

すると、ターミナルにてrails routesコマンドを実行するとdownload_sample GET /samples/:id/download(.:format) samples#download が現れ、これを元にsamples/index.html.erbに以下のコードのように変更しましょう。

    <% @samples.each do |sample| %>
      <tr>
        <td><%= sample.image %></td>
        <td><%= link_to 'Show', sample %></td>
        <td><%= link_to 'Edit', edit_sample_path(sample) %></td>
        <td><%= link_to 'Download', download_sample_path(sample) %></td>
        <td><%= link_to 'Destroy', sample, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>

Raspberry Pi3にCentOS7を入れた話

 目次 

 

環境

OS : macOS(Sierra)

microSDカード 16GB

Raspberry Pi3 

なぜ、CentOSを入れたのか

ラズパイ3(Raspberry Pi3)に今までRASPBIAN JESSIE WITH PIXELというOSを使っていたが、最近サーバー関係の勉強をするにあたって導入したのが経緯です。

 

手順

ダウンロード

今回はRaspberry pi3なので、AltArch ReleasesのところにあるRaspberry pi3をクリックしてダウンロードしましょう。

 

 

URLはこちら。 

Download - CentOS Wiki

 

無事、CentOS-Userland-7〜〜RaspberryPi3.img.xzがダウンロードされましたね

 

次はxzコマンドを使って解凍しましょう。

ターミナルを開いてcdコマンドを使ってCentOS-Userland-7〜〜RaspberryPi3.img.xzがあるディレクトリまで行きます。

次に、xzコマンドを用いてファイルを解凍し、イメージ(CentOS-Userland-7〜〜RaspberryPi3.img)を取り出します。

xz -d CentOS-Userland-7〜〜RaspberryPi3.img.xz 

 microSDカードのフォーマット

続いて、microSDカードのフォーマットを行います。

ターミナルを開いてdfコマンドを実行し、今回使用するmicroSDカードが何番かを確認以下のコマンドを実行しフォーマットを行います。

diskutil umount /dev/disk番号

フォーマットしたmicroSDカードにイメージを書き込む

sudo dd if=CentOS-Userland-7〜〜RaspberryPi3.img of=/dev/rdisk番号 bs=8192

上記のコマンド行えば、書き込みが終わりラズパイにmicroSDカードを差し込むとCentOSが動くでしょう。

 

 

Raspberry Pi  起動後の設定 

 

Railsでおすすめなgemを集めてみた。

Devise

ログイン昨日実装する際にもってこいのgemです。

FacebookTwitterログインも可能にしてくれる優れものです。

URL: 

github.com

 

RailsAdmin

管理者ユーザーを作る時におすすめです。

ユーザー管理画面もあり、簡単に管理用のページが作れます。

URL:

github.com

 

Carrierwave

画像やファイルをアップロードする際に便利です。

他にも似たようなGemがありますが、私はこのGemが画像アップロード機能を実装する際に一番楽かつ簡単にできる優れものだと思います。

URL:

github.com

 

Bootstrap Ruby Gem

今回紹介するのはBootstrap4のgemです。

デザイン周りはやはりBootstrapが王道ですよね。

非デザイナーな私はかなり重宝しております。

URL:

github.com

 

FliendlyId

これは、 URLに含まれるIdカラム部分を他のカラムで表示し、よりセキュアなWEBアプリケーションにするものです。

URL:

github.com

 

Rails データ型を変更するさいは。。。。。

データ型の変更ってどうるんだろう。

何度かデータ型を変更することがあったので、やり方を忘れないようにここにメモります。

やり方はいたってシンプルです。


まず、お使いのターミナルで

rails g migration クラス名


とコマンド打ちます。

次に出来上がったミグレーションファイルを開き

  def change
    change_column 変更したいデータ型
  end

と変更してあげるとデータ型を変更できます。

以上

Macbook ProにTomcatを入れた話

Javaでバックエンドを書く練習をしています。
今日はJavaでWebアプリケーションを書く際に必要なApache(Tomcat)を入れた話をします。

環境

 macOS Sierra

ダウンロード

まず、以下のURLからCore: tar.gzファイルをダウンロードしましょう。(今回は、Tomcat 8をダウンロードします。)

  URL: http://tomcat.apache.org/download-80.cgi

ダウンロードしたあと、ターミナルを開いて以下のコマンドを実行します。

 $ sudo mv ~/Downloads/apache-tomcat-"あなたがダウンロードしたバージョン" /usr/local

起動

では起動してみましょう

起動 

$ /Library/Tomcat/bin/startup.sh

終了 

$ /Library/Tomcat/bin/shutdown.sh

補足ですが。。。

TomcatJavaアプリケーションを動作させるためには、以下のようにします。

コンパイル

$ javac -cp /Library/Tomcat/lib/servlet-api.jar Sample.java 

次に

$ cd /library/Tomcat/webapps 

で移動して、

$ mkdir abc

としabcフォルダを作成します。

abcフォルダの中に、WEB-INFフォルダweb.xmlファイルを作成します。

WEB-INFフォルダの中にclassesフォルダを作り、先ほどコンパイルしてできたclassファイルをclassesフォルダの中に投げ込みます。

最後にwebアプリケーションを動作させるためにweb.xmlをいじります。

こんな感じで、

 <?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_3_1.xsd"
    version="3.1">

    <servlet>
        <servlet-name>Sample</servlet-name>
        <servlet-class>Sample</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Sample</servlet-name>
        <url-pattern>/Sample</url-pattern>
    </servlet-mapping>

   

</web-app>


最後に指定したポート番号にアクセスしてみてください。(デフォルトは8080です。)
8080/Sample
====以上=======

何かご指摘がありましたら、コメントしていただけると幸いです。

pyenv No such file or directory??

homebrew再インストール後にターミナルに下記のメッセージが出た。

pyenv.bash: No such file or directory!?

 

解決するにはまず問題でもあるpyenvをアンインストールします。

brew uninstall --force pyenv

 

次に .bash_profileの中身を編集します。

.bash_profileを見つけるにはターミナルで

cd

 次に、

ls -la

とコマンドを実行すると.bash_profileが見つかると思います。

 

では、.bash_profileの中にあるpyenvに関するところを削除します。

僕の場合、pyenvを利用しPython3をインストールしたため

#pythin3.5
hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge

と書かれているところを削除しターミナルを再起動すると、問題となっていたメッセージが消えました。

 

ー以上ー

 

ご指摘がありましたらコメントしていただけると幸いです。

Rails 4.2.6から5.0.2にした話

環境 macOS Sierra

まずRailsのアプリケーションを作る
ターミナルでrails new appをします。

先ほど作ったappの中にあるGemfileを開き

gem 'rails', '~> 5.0.2'

と編集し、ターミナルでbudle installとし、次にrails vとすれば、バージョンがアップされています。

 

以上です。