Sidekiq concurrency 设置和一些注意事项 pool 要大于 concurrency,直接在 sidekiq.yml 和 database.yml 改。
另外有个链接 Sidekiq Advanced-Options#concurrency 也可以看看。
共勉啊 学好英文是通往新世界的大门
参考这个看一下 init 。还有就是遇到坑再去翻一下 Readme
赞,另外有个地方在 Rails5 中需要注意一下:autoload_paths 改为 eager_load_paths
config.autoload_paths << Rails.root.join('app', 'form_builders')
Rails 5 disables autoloading after booting the app in production
看看 clearance
awesome
已下单
权限问题。
另外,提示里已经给出解决方法了
to install the gems into ./vendor/bundle/, or you can enter your password and install the bundled gems to Rubygems using sudo.
我的习惯是每个 Ruby & Rails 项目的 gem 都 install 在这个项目的目录下而不是全局。 bundler 管理 Ruby Gem 小技巧
赞
话说三个月前准备翻译这本书来着,后来搁置了。。。
jwt 处理
棒
active_model_serializers 这个可以吗?
pundit + 1
本地环境 gem install spring
试试
最近刚好在做这一块,分享一篇文章
Authentication with JSON Web Tokens using Rails and React / Flux
支持,一支在用,没发现啥问题。
Using Haml with Rails To use Haml with Rails, simply add Haml to your Gemfile and run bundle. gem 'haml' Haml 5 will require Rails version 4.0 or later. If you are using Rails 3.x, you should use Haml version 4.0.x: gem 'haml', '~> 4.0.5' If you'd like to replace Rails's Erb-based generators with Haml, add haml-rails to your Gemfile as well.
@dongli1985 turbolinks:before-cache
能解决大部分第三方库生成的 UI widgets 重复渲染的问题。 👍
在 body 上加上 action_name
和 controller_name
作为 class。
然后以是否包含对应 class 作为判断条件。例如:
initTyped: function(){
if($('.home.index').length > 0){
$('.website-description').typed({
strings: ['xxx'],
loop: true,
showCursor: true,
startDelay: 500,
backSpeed: 10,
backDelay: 1500,
typeSpeed: 80,
contentType: 'html'
});
}
},
initPage: {
home: function(){
if($('.home.index').length > 0){
App.Home.messageForm();
}
}
},
@lyfi2003 的文章加上 ORGANIZING JAVASCRIPT IN RAILS APPLICATION WITH TURBOLINKS 应该就能上手了。
没法到场的怎么整到一件(自费)
推荐一份 PPT rails-5-features
👍
用户系统:可以用单表继承,Store(商户) 和 Customer(顾客) model 都继承 User model;
订单系统:Order(预约) model,关键字段有 creator_id (下单者) 和 target_id(被预约者)
User model 指定与订单的关系:
has_many :own_orders, dependent: :destroy, foreign_key: :creator_id, class_name: "Order"
has_many :appointed_orders, dependent: :destroy, foreign_key: :target_id, class_name: "Order"
Order model 不需写 belong_to ,因为我们还不知道 creator 是 Store 还是 Customer(下文会提到如何找 creator 和 target)
Store 和 Customer model 继承了 User,所以也继承了与订单的关系
商户预约顾客:
order = Order.create(creator_id: store.id, target_id: customer.id)
顾客预约商户:
order = Order.create(creator_id: customer.id, target_id: store.id)
通过订单记录查预约者和被预约者:
通过 order 记录可查询预约者和被预约者:实现你所列的第二点 (标明每个预约是哪位商户、哪位顾客参与),具体如下:
# 查询预约者:
user = User.find(order.creator_id)
(user.type == "store")? (creator = Store.find(user.id)) : (creator = Customer.find(user.id))
# 查询被预约者同理
用户 (商户或者顾客) 查询自己参与的所有订单:
通过 store 或者 customer 记录可查询参与的所有预约:实现你所列的第四点 (返回该用户参与的所有 Appointment),具体如下:
owner_order = user.own_orders
appointed_orders = user.appointed_orders
写到一半还想到了另外一种方案:
用户系统不变,订单 model 不变,另外加一个 user_order 中间表记录 order_id, owner_id 和 target_id
注 以上思路均没实践过,可能有纰漏。不过用 Rails 写个 demo 也很快
demo
👍
#4 楼 @peter @huacnlee Rails ActiveRecord::AttributeMethods::Serialization 应该可以实现。
可参考 stack overflow:Array Attribute for Ruby Model 第一个答案
如果按照 #1,执行了 bundle config build.nokogiri --use-system-libraries --with-xml2-include=/usr/include/libxml2/
你就会在当前用户目录下的 .bundle
发现一个config
文件,然后在这个文件里头有这么一行代码:
BUNDLE_BUILD__NOKOGIRI: "--use-system-libraries --with-xml2-include=/usr/include/libxml2/"
config 的内容这应该是 bundler 管理 gem 的 配置文件,一般我有这样一个习惯:
在项目根目录下新建一个 .bundle
目录,该目录下面有 config
文件,那么我们执行 bundle install
时就会依据 config 文件中我们写的规则,例如:
---
BUNDLE_PATH: vendor/bundle
BUNDLE_WITHOUT: test:postgres
BUNDLE_DISABLE_SHARED_GEMS: true
BUNDLE_BUILD__NOKOGIRI: "--use-system-libraries --with-xml2-include=/usr/include/libxml2/"
Installing nokogiri 1.6.8 with native extensions
时就会使用 config
中配置的另,BUNDLE_PATH: vendor/bundle 有一个好处就是该项目中使用到的 gem 只会在该项目下,而不是 install 到 ruby 安装的目录下,这对强迫症来说是极好的。