โครงการนี้มีจุดมุ่งหมายที่จะ:
ข้อมูลจำเพาะสรุป:
นี่คือแอพมือถือไคลเอนต์ไคลเอนต์ที่ใช้ข้อมูลจาก API นี้ -> Android -Base นี้
ติดตั้ง Ruby Version 2.3.0 และตั้งค่าด้วย Ruby Environment Manager ของคุณ (ข้อมูลเพิ่มเติมที่นี่)
ติดตั้ง postgres และเริ่มต้นเซิร์ฟเวอร์ PostgreSQL ในเบื้องหน้า (ข้อมูลเพิ่มเติมที่นี่)
โคลนที่เก็บและเข้าไปข้างใน:
git clone git://github.com/jordifierro/rails-api-base.git --origin rails-api-base your-project-name
cd your-project-name
./bin/rename_project YourProjectName
./bin/remove_notes
./bin/create_psql_user yourprojectname
./bin/setup
rspec
./bin/reset_git https://github.com/yourusername/your-project-name.git
ตอนนี้คุณสามารถเริ่มพัฒนาแอพของคุณเองได้แล้ว!
(ในขณะที่กำลังพัฒนาบน LocalHost ให้เริ่ม MailCatcher เพื่อรับการยืนยันผู้ใช้และกู้คืนอีเมลรหัสผ่าน)
gem install mailcatcher
mailcatcher
แอปพลิเคชันนั้นเกือบจะว่างเปล่ามันมีจุดมุ่งหมายเฉพาะที่จะให้โมดูลพื้นฐานบางอย่างใช้โครงสร้างด้วยรูปแบบบางอย่างและให้รหัสตัวอย่าง นี่คือข้อกำหนด:
แอพนี้มีเฉพาะโมดูลที่เกี่ยวข้องกับ Rails-API ดังนั้นจึงบางกว่าแอพปกติ แต่ขาดคุณสมบัติบางอย่าง (ซึ่งสามารถเพิ่มด้วยตนเองได้หากจำเป็น) สถาปัตยกรรมของ API ติดตาม Rails และ HTTP Restful Good Practices เช่น:
เส้นทางปลายทางและโครงสร้างรหัสพร้อมที่จะเพิ่ม API รุ่นใหม่ รุ่นนี้ถูกเลือกผ่าน headers['Accept'] ด้วยค่าเช่น application/vnd.railsapibase.v1 เพื่อใช้เวอร์ชันแรก
เพื่อให้รหัสตัวอย่างแอพได้รับการพัฒนารหัสเพื่อจัดการ notes (เช่นการแสดงบันทึกย่อกระดาษที่เขียนด้วยลายมือ) ประกอบด้วย title และ content ดังนั้นแอพจึงมีเส้นทางโน้ตตัวควบคุมโมเดลและ RSPEC เพื่อทำงานกับบันทึกย่อนั้น
วัตถุประสงค์ที่เป็นเอกลักษณ์ของมันคือการเป็นแนวทางในการเพิ่มรหัสใหม่ดังนั้นจึงจะถูกลบโดยสคริปต์เชลล์ bin/remove_notes
ในการจัดโครงสร้างคุณสมบัติตัวควบคุมระดับโลกของ API โมดูลที่แตกต่างกันได้ถูกนำไปใช้เป็น ActiveSupport :: ความกังวลและทดสอบโดยใช้ตัวควบคุมปลอม โมดูลเหล่านั้นรวมอยู่ใน apicontroller ซึ่งเป็นตัวควบคุมพ่อของส่วนที่เหลือของคอนโทรลเลอร์ (ตรวจสอบโพสต์นี้) ในขณะนี้มี 4 โมดูล: การตรวจสอบความถูกต้องการจัดการข้อผิดพลาดการทำให้เป็นสากลและการหมดอายุเวอร์ชัน (ตรวจสอบสิ่งนี้) Code Climate เป็นบริการที่ใช้เพื่อตรวจสอบว่าสิ่งนี้และส่วนที่เหลือทั้งหมดของรหัสปฏิบัติตามแนวทางปฏิบัติที่ดี (คุณต้องเปิดใช้งานเพื่อให้โครงการของคุณใช้งาน)
CodeClimate สามารถทำงานได้ในพื้นที่ด้วย CLI
เกือบทุก API ต้องการผู้ใช้เซสชันและการรับรองความถูกต้องดังนั้นนี่เป็นคุณสมบัติที่สำคัญที่สุดของแอพนี้ โซลูชันที่เลือกใช้ has_secure_password และ has_secure_token กับการใช้งานที่กำหนดเองเพื่อจัดการเซสชันและผู้ใช้:
โทเค็นจะถูกส่งคืนเมื่อผู้ใช้เข้าสู่ระบบและจะต้องตั้งค่าเป็น headers['Authorization'] ในการร้องขอในภายหลังเพื่อตรวจสอบสิทธิ์ ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ (โพสต์นี้)
ในการตรวจสอบว่ายังสามารถใช้เวอร์ชันได้มีโมดูลที่กรองก่อนการโทรแต่ละวิธี มันจะส่งคืนข้อผิดพลาดหากเวอร์ชันหมดอายุและยังมีจุดสิ้นสุดในการตรวจสอบวันหมดอายุจากไคลเอนต์ (เช่น: เพื่อเตือนผู้ใช้ให้อัปเดตแอป) หากคุณต้องการตั้งค่าวันที่หมดอายุเป็นรุ่นคอนกรีตเพียงตั้งค่าจำนวนเต็มที่จัดรูปแบบเป็นสตริงเป็น ENV['LAST_EXPIRED_VERSION'] ทุกเวอร์ชันเท่ากันหรือต่ำกว่าข้อความแสดงข้อผิดพลาดในการอัพเกรดที่ระบุเมื่อถูกถาม ระบบที่จะตั้งค่าคำเตือนเป็นบางรุ่นเหมือนกันโดยใช้ ENV['LAST_WARNED_VERSION'] เพื่อตั้งค่าเวอร์ชันที่สูงกว่าที่คุณต้องการเตือน ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ (โพสต์นี้)
แอพนี้แปลเป็นภาษาอังกฤษ (ภาษาเริ่มต้น) และภาษาสเปน (เช่นตัวอย่างการแปล) มีโมดูลง่ายๆที่ใช้สถานที่จาก request.env['HTTP_ACCEPT_LANGUAGE'] (ที่สามารถตั้งค่าผ่านส่วนหัว Accept-Languange ) และตั้งค่าเป็นระบบเพื่อส่งคืนการแปลที่เหมาะสมโดยอัตโนมัติ ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ (โพสต์นี้)
rspec การทดสอบว่าการแปลที่จำเป็นทั้งหมดถูกตั้งค่าสำหรับภาษาที่ spec_helper.rb
I18n.default_locale = :es
เพื่อเพิ่มการควบคุมไคลเอนต์ API มีระบบตรวจสอบคีย์ API ลับที่สามารถเปิดใช้งานได้เพื่อให้แน่ใจว่าเป็นไคลเอนต์ที่ถูกต้องที่สร้างผู้ใช้ เพื่อเปิดใช้งานบริการนี้เพียงกำหนดค่าเป็น ENV['SECRET_API_KEY'] คีย์ Secret API จะต้องส่งที่ headers['Authorization'] เมื่อโทรสร้างวิธีการสร้างผู้ใช้ใหม่
โครงการนี้ได้รับการพัฒนาโดยใช้กระบวนการ TDD และรหัสทั้งหมดได้รับการทดสอบโดยใช้ RSPEC ตามแนวทางปฏิบัติที่ดีที่สุดที่กำหนดไว้ที่ betterspecs.org เป็นสิ่งสำคัญที่จะต้องรักษาอย่างนั้น Code Climate ตรวจสอบว่าการทดสอบครอบคลุมกรณีรหัสทั้งหมด Travis-CI เป็นระบบการรวมอย่างต่อเนื่องที่ดำเนินการทดสอบทุกครั้งที่มีการผลักดัน หากคุณต้องการใช้บริการนี้คุณต้องเปิดใช้งานพวกเขาที่เว็บไซต์ของพวกเขา หากคุณไม่เพียงแค่ลบไฟล์. .travis.yml
เพื่อหลีกเลี่ยงภาระในการปรับเปลี่ยนรหัสด้วยตนเองเพื่อเตรียมไฟล์เพื่อเริ่มโครงการใหม่สคริปต์บางตัวได้ถูกนำไปใช้ คุณสามารถค้นหาได้ภายใน bin/ โฟลเดอร์ (พวกเขาถูกทำลายตัวเองหลังการใช้งาน)
พวกเขาได้รับการวิเคราะห์โดย Shellcheck
เพื่อหลีกเลี่ยงปัญหาการปรับใช้ฐานข้อมูล Postgres ได้รับการตั้งค่าตั้งแต่ต้นเป็นระบบฐานข้อมูลสำหรับการทดสอบและพัฒนา ความจริงที่ว่า Heroku ใช้เป็นระบบ DB เริ่มต้นได้รับการพิจารณาเช่นกัน
โครงการใช้ Rails 5.1.4 (โมดูล API) และ Ruby 2.3.0 และตั้งใจที่จะได้รับการปรับปรุงให้ทันสมัยโดยใช้บริการ Gemnasium คุณต้องเปิดใช้งานบริการนี้สำหรับ repo ของคุณหากคุณต้องการใช้
เพื่อเพิ่มความสง่างามของรหัสและความสามารถในการอ่านคู่มือสไตล์ทับทิมนี้ได้ถูกนำมาใช้เป็นข้อมูลอ้างอิง Rubocop Gem เป็น analizer รหัสสแตติกแบบทับทิมตามคู่มือสไตล์นั้น แค่วิ่ง:
gem install rubocop
rubocop
โปรดจำไว้ว่าไฟล์ .rubocop.yml กำหนดการกำหนดค่า (ลบหากไม่ได้ใช้)
การตอบสนองจะถูกจัดรูปแบบโดยใช้อัญมณี ActiveModelserializers Serializers มีหน้าที่จัดรูปแบบเอาต์พุต JSON และเป็นวิธีที่ดีในการแยกเลเยอร์นี้จากรุ่นและตัวควบคุม นอกจากนี้พวกเขายังมีเวอร์ชันเช่นคอนโทรลเลอร์ (เช่น: Api::V1::Serializer ) เพราะพวกเขาแทรกแซงโดยตรงกับผลลัพธ์ของแต่ละรุ่น API สิ่งนี้จะช่วยให้เรารักษาสัญญารุ่นเก่า
นี่คือแอพมือถือไคลเอนต์ไคลเอนต์ที่ใช้ข้อมูลจาก API นี้ -> Android -Base นี้
ฉันไม่ใช่นักพัฒนาที่มีประสบการณ์ทางรถไฟดังนั้นคำแนะนำและการมีส่วนร่วมทั้งหมดจึงเป็นมากกว่าการต้อนรับ!
rspec
rubocop
น่าเสียดายที่ยังไม่มีผู้มีส่วนร่วม
http://jordifierro.com