跳到主要內容

發表文章

目前顯示的是 12月, 2018的文章

How to attach a file/image in your data? Using paperclip in a rails application.

在 rails 裡有一個很好用的夾檔套件paperclip,今天就要來簡單介紹paperclip怎麼用. 首先要利用imagemagick套件,讓你的rails專案具有處理影像的能力. Mac OS X $ brew install imagemagick  Linux distribution $ sudo apt-get install imagemagick -y 然後在Gemfile中引用paperclip. # Gemfile ... gem "paperclip", git: "git://github.com/thoughtbot/paperclip.git" ... 記得bundle一下. $ bundle install 接下來利用scaffold製作一個範例,在這個範例中我們要用paperclip幫這個使用者加上照片,paperclip會將照片資料記錄起來並將照片上傳到public資料夾內. $ rails generate scaffold User name:string email:string tel:string  生成附檔資料表 $ rails generate paperclip user avatar 修改 class AddAvatarToUsers < ActiveRecord::Migration[5.2]   def up    add_attachment :users, :avatar   end   def down    remove_attachment :users, :avatar   end end 讓user model知道怎麼處理夾檔,可以上傳的檔案格式容量限制等都可以寫在這裡. # app/models/user.rb  class User < ActiveRecord::Base  has_attached_file :avatar, styles: { medium: "300x300", thumb: "100x100" }   validates_attachment_content_t

undefined method `for' for #<' Devise::ParameterSanitizer:0x00007f0e320f79d0 '>

 NoMethodError in Devise::RegistrationsController#edit 用Devise套件作為系統的帳號管理功能,結果在這個檔案出現錯誤. app/controller/application_controller.rb class ApplicationController < ActionController::Base   # Prevent CSRF attacks by raising an exception.   # For APIs, you may want to use :null_session instead.   protect_from_forgery with: :exception   before_action :configure_permitted_parameters , if: :devise_controller ?   protected   def configure_permitted_parameters     devise_parameter_sanitizer . for ( :sign_up ) { | u | u.permit( :username , :email , :password , :password_confirmation , :remember_me , :avatar , :avatar_cache ) }     devise_parameter_sanitizer . for ( :account_update ) { | u | u.permit( :username , :password , :password_confirmation , :current_password , :avatar ) }   end end   只要將for修正成permit,就可以了. def configure_permitted_parameters    devise_parameter_sanitizer .permit ( :sign_up )  {... }   devise_parameter_sanitizer .permit ( :account_update )  {... } end

How to use docker compose build a ruby on rails container?

在推Ruby on rails協同開發架構時,發現每個人的電腦都不同,有的是windows、有的是linux、有的則是mac,單單為了要讓大家能一起開始,就傷透腦筋,為了解決開發環境一致性的問題,我們採用了docker,想法是:如果有一個能跨越自身的電腦作業系統版本,大家都能共用的環境,如同VM,我們不就可以解決這個問題了;所以有了這個專案。 Github網址: https://github.com/tyRoRteam/dev_docker 如何使用 安裝docker 請先到 Docker官網  安裝適合電腦的版本, 使用windows的朋友需注意必須windows 10 professional版本才裝得起來。 Download git repo $ git clone https://github.com/tyRoRteam/dev_docker.git  Build and Run RoR development docker container $ cd dev_docker $ docker-compose up -d  Login to container  $ ssh -X -p 10022 user@localhost (default username/password: user/user) docker-compose.yml 設定檔 version: '3'  services:  ror_dev:   build: ror_dev/   ports:    - "10022:22"    - "10080:3000"   volumes:    - ./user_home:/home/user    - ./configs/sshd_config:/etc/ssh/sshd_config 在設定檔中,我們開通了本機與container兩個port對接,本機的10022連接container的22 port,讓ssh可以連得進去,另一個就是本機的10080連接container的3000 port,因為rails s預設為3000 port,這樣當container內執行 $ rails s 時,就可以用本機瀏覽器 ht

How to maintain your project source code in GitHub with collaborative development?

一個人的江湖很孤獨 一個人的江湖是孤獨的,寫程式也是,雖然很多高手都是一個人,但是如果能集合多人的力量不是更好嗎?高手難求,但是一個好的團隊卻是可以培養出來的,加入一個好的團隊,大家努力往前爬,不也是一種幸福嗎? 所以,這篇文章就是要說明如何與團隊協同開發系統,協同開發的流程會是怎麼樣子來進行呢? 組織( Organization) 開發團隊或稱為專案團隊,可以視為一個組織,在組織中有許多角色,有專案管理者、程式開發人員.....等,在GitHub中將專案管理者視為專案擁有者(Owner),其他專案開發者(Member),下圖描述說明:組織(organization)名稱為Org X,其中Mark為專案管理者(owner)、Jimmy與Bill都是程式開發人員(member)。 在這個組織中主要維運一個專案(repo_abc),為Jimmy,Bill和Mark共同維護,接下來就以Jimmy觀點來看他怎麼進行維護專案. Step1) 同步 當有需求需要進行程式修改時,先要進行程式碼同步,把OrgX上repo_abc/master最新程式碼抓下來. $ git fetch remote: Enumerating objects: 9, done. remote: Counting objects: 100% (9/9), done. remote: Compressing objects: 100% (4/4), done. remote: Total 5 (delta 2), reused 3 (delta 1), pack-reused 0 Unpacking objects: 100% (5/5), done. From https://github.com/Org_x/repo_abc e795431..d4468d5 master -> origin/master Step2) 同步再上傳 當完成修改準備要push程式碼到Jimmy的GitHub/repo_abc時,記得先再同步一次,確定沒問題再push. $ git add . $ git commit -m "mark PENDING: Not yet implemented&quo