戻る

Rails5.0


動画学習サイトの構築 Rails5.0

  (0)
1,000円

タスク3-4   アップロード(paperclip)

このタスクについて


タスクの内容を一部抜粋します。
プロジェクトを購入していただくとこのタスクの内容の全てを読みやすい表示で見ることができます。
プログラムコードが色分けされて見やすくなります。
プログラムコードに行番号が付きます。
本文が色分けされて見やすくなります。
そしてこのアプリケーションのフルコードをダウンロードすることが可能になります。




ImageMagickをインストールします。


ダウンロードは以下のサイトからできます。
ww.npackd.appspot.com


インストールは以下の手順でお願いします。
途中、「install legacy utilities」と「install development」にチェックを入れて下さい。
mrradiology.hatenablog.jp


続いてGnuWinのインストールを行います。
ダウンロードは以下のサイトからできます。
sourceforge.net


インストールは以下の手順でお願いします。
mrradiology.hatenablog.jp




記述追加 GemFile(78行目)
gem 'paperclip', '~> 5.1.0'



GemFile
 
source 'https://rubygems.org' 
git_source(:github) do |repo_name| 
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/") 
  "https://github.com/#{repo_name}.git" 
end 
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
gem 'rails', '~> 5.0.7', '>= 5.0.7.1' 
# Use postgresql as the database for Active Record 
gem 'pg', '>= 0.18', '< 2.0' 
# Use Puma as the app server 
gem 'puma', '~> 3.0' 
# Use SCSS for stylesheets 
gem 'sass-rails', '~> 5.0' 
# Use Uglifier as compressor for JavaScript assets 
gem 'uglifier', '>= 1.3.0' 
# Use CoffeeScript for .coffee assets and views 
gem 'coffee-rails', '~> 4.2' 
# See https://github.com/rails/execjs#readme for more supported runtimes 
# gem 'therubyracer', platforms: :ruby 
# Use jquery as the JavaScript library 
gem 'jquery-rails' 
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks 
gem 'turbolinks', '~> 5' 
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 
gem 'jbuilder', '~> 2.5' 
# Use Redis adapter to run Action Cable in production 
# gem 'redis', '~> 3.0' 
# Use ActiveModel has_secure_password 
# gem 'bcrypt', '~> 3.1.7' 
# Use Capistrano for deployment 
# gem 'capistrano-rails', group: :development 
group :development, :test do 
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console 
  gem 'byebug', platform: :mri 
end 
group :development do 
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code. 
  gem 'web-console', '>= 3.3.0' 
end 
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem 
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 

# bulma 
gem 'bulma-rails', '~> 0.7.4' 
gem 'bulma-extensions-rails', '~> 1.0.30' 

# デバイス 
gem 'devise', '~>4.2' 

# アバター 
gem 'gravtastic' 

# toastr 
gem 'toastr-rails', '~> 1.0' 

# 日本語化 
gem 'rails-i18n' 

# google認証 
gem 'omniauth' 
gem 'omniauth-google-oauth2' 

# 管理ダッシュボード 
gem 'activeadmin' 

# 管理ダッシュボードのテーマ 
gem 'active_skin' 

#画像アップロード 
gem 'paperclip', '~> 5.1.0' 



コマンド
bundle


記述追加 config\environments\development.rb(3行目)
Paperclip.options[:command_path] = "C:\Program Files\ImageMagick-7.0.10-Q16;C:\Program Files (x86)\GetGnuWin32\bin"



config\environments\development.rb
 
Rails.application.configure do 
  Paperclip.options[:command_path] = "C:\Program Files\ImageMagick-7.0.10-Q16;C:\Program Files (x86)\GetGnuWin32\bin" 
  # Settings specified here will take precedence over those in config/application.rb. 
  # In the development environment your application's code is reloaded on 
  # every request. This slows down response time but is perfect for development 
  # since you don't have to restart the web server when you make code changes. 
  config.cache_classes = false 
  # Do not eager load code on boot. 
  config.eager_load = false 
  # Show full error reports. 
  config.consider_all_requests_local = true 
  # Enable/disable caching. By default caching is disabled. 
  if Rails.root.join('tmp/caching-dev.txt').exist? 
    config.action_controller.perform_caching = true 
    config.cache_store = :memory_store 
    config.public_file_server.headers = { 
      'Cache-Control' => 'public, max-age=172800' 
    } 
  else 
    config.action_controller.perform_caching = false 
    config.cache_store = :null_store 
  end 
  # Don't care if the mailer can't send. 
  config.action_mailer.raise_delivery_errors = true 
  config.action_mailer.perform_caching = false 
  # Print deprecation notices to the Rails logger. 
  config.active_support.deprecation = :log 
  # Raise an error on page load if there are pending migrations. 
  config.active_record.migration_error = :page_load 
  # Debug mode disables concatenation and preprocessing of assets. 
  # This option may cause significant delays in view rendering with a large 
  # number of complex assets. 
  config.assets.debug = true 
  # Suppress logger output for asset requests. 
  config.assets.quiet = true 
  # Raises error for missing translations 
  # config.action_view.raise_on_missing_translations = true 
  # Use an evented file watcher to asynchronously detect changes in source code, 
  # routes, locales, etc. This feature depends on the listen gem. 
  # config.file_watcher = ActiveSupport::EventedFileUpdateChecker 
  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } 
  
  #Gメールの設定 
  config.action_mailer.delivery_method = :smtp 
  config.action_mailer.smtp_settings = { 
    address: "smtp.gmail.com", 
    port: 587, 
    enable_starttls_auto: true, 
    authentication: "plain", 
    user_name: 'win.rails.learn@gmail.com', 
    password: 'vusopllqzbyvvahk' 
  } 
end 



「config\initializers」フォルダに「paperclip_media_type_spoof_detector_override.rb」ファイルを新規作成します。


config\initializers\paperclip_media_type_spoof_detector_override.rb(新規作成したファイル)
 require 'paperclip/media_type_spoof_detector' 
module Paperclip 
  class MediaTypeSpoofDetector 
    def spoofed? 
        false 
    end 
  end 
end 



コマンド
rails generate paperclip project image


更新
db\migrate\20200715015109_add_attachment_image_to_projects.rb
[5.0]の記述を追加して下さい。
 class AddAttachmentImageToProjects < ActiveRecord::Migration[5.0] 
  def self.up 
    change_table :projects do |t| 
      t.attachment :image 
    end 
  end 
  def self.down 
    remove_attachment :projects, :image 
  end 
end 



コマンド マイグレーション適用
rails db:migrate


「app\models\project.rb」ファイルに以下の記述を追加します。


記述追加 app\models\project.rb(8,9行目)
     has_attached_file :image, styles: { medium: "680x300>", thumb: "170x75>" } 
    validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/ 



app\models\project.rb
 
class Project < ApplicationRecord 

    has_many :tasks 

    validates :name, presence: true, length: { maximum: 50 } 
    validates :content, presence: true, length: { maximum: 500 } 
    validates :price, presence: true, numericality: { only_integer: true } 

    has_attached_file :image, styles: { medium: "680x300>", thumb: "170x75>" } 

    validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/ 
end 



「app\admin\projects.rb」ファイルの記述を更新します。


記述更新 app\admin\projects.rb
 
ActiveAdmin.register Project do 

  permit_params :name, :content, :price, :image 

  show do |t| 
		attributes_table do 
			row :name 
			row :content 
			row :price 
			row :image do 
				project.image? ? image_tag(project.image.url, height: '100') : content_tag(:span, "まだ画像がありません") 
			end 
		end 
	end 
	form :html => { :enctype => "multipart/form-data" } do |f| 
		f.inputs do 
			f.input :name 
			f.input :content 
			f.input :price 
			f.input :image, hint: f.project.image? ? image_tag(project.image.url, height: '100') : content_tag(:span, "アップロードできるのは JPG/PNG/GIF 画像です。") 
		end 
		f.actions 
	end 
end 




この続きはプロジェクトを購入していただくことで見ることができます。
プロジェクトを購入していただくとこのタスクの内容の全てを読みやすい表示で見ることができます。
プログラムコードが色分けされて見やすくなります。
プログラムコードに行番号が付きます。
本文が色分けされて見やすくなります。
そしてプロジェクトを購入するとこのアプリケーションのフルコードをダウンロードすることができます。

まだレビューはありません。

動画学習サイトの構築 Rails5.0

1,000円

動画で学べるサイトを構築するプロジェクトです。プロジェクトを登録し、そのプロジェクトに動画を登録できます。プロジェクトはクレジットカードで購入でき、購入後すぐに動画を見ることができます。写真のアップロード、レビュー機能の実装、Google認証、アマゾンS3の利用方法も解説。ActiveAdminの実装、Gメールの設定、 HEROKUへのデプロイ方法を解説。 フルコードのダウンロード可能。

タスク数: 100