[pinterestclone]$ rake db:migrate
DEPRECATION WARNING: Sprockets method `register_engine` is deprecated.
Please register a mime type using `register_mime_type` then
use `register_compressor` or `register_transformer`.
https://github.com/rails/sprockets/blob/master/guides/extending_sprockets.md#supporting-all-versions-of-sprockets-in-processors
(called from block (2 levels) in <class:Railtie> at /usr/local/lib/ruby/gems/2.3.0/gems/sass-rails-5.0.5/lib/sass/rails/railtie.rb:57)
DEPRECATION WARNING: Sprockets method `register_engine` is deprecated.
Please register a mime type using `register_mime_type` then
use `register_compressor` or `register_transformer`.
https://github.com/rails/sprockets/blob/master/guides/extending_sprockets.md#supporting-all-versions-of-sprockets-in-processors
(called from block (2 levels) in <class:Railtie> at /usr/local/lib/ruby/gems/2.3.0/gems/sass-rails-5.0.5/lib/sass/rails/railtie.rb:58)
== 20160721232702 AddUserIdToPins: migrating ==================================
-- add_column(:pins, :user_id, :integer)
-> 0.0010s
-- add_index(:pins, :user_id)
-> 0.0010s
== 20160721232702 AddUserIdToPins: …Run Code Online (Sandbox Code Playgroud) 我有一个带有列的模型price.我需要添加一个new_column,marked_price其值为price默认值.我可以在迁移中写这个,或者最好的方法是什么?
就像是:
class AddMarkedPriceToMenuItems < ActiveRecord::Migration
def change
add_column :menu_items, :marked_price, :decimal, :default => :price
end
end
Run Code Online (Sandbox Code Playgroud) 所以我正在制作一个狂欢扩展,其中我有自己的属性,我Spree::Shipment在结帐过程中添加并添加了一个输入,问题是我的属性不是出货的允许属性的一部分,并且不清楚如何将其添加到允许的属性中.我找到了这个拉动请求的对话,据说要使用
Spree::PermittedAttributes.shipment_attributes << :my_custom_attribute
Run Code Online (Sandbox Code Playgroud)
但是,目前还不清楚我在哪里放这个!?
"哦,把它放进去spree.rb"
这没有用.我试过把这段代码放进去
lib/spree.rb
lib/spree/permitted_attributes.rb
lib/spree_decorator.rb
lib/spree/permitted_attributes_decorator.rb
Run Code Online (Sandbox Code Playgroud)
(如此处所示)并且所有这些都导致错误抱怨shipment_attributes未被定义(因此可能是在PermittedAttributes评估主文件定义之前运行代码)或者根本没有任何反应.我应该在哪里放置此代码以将我的属性添加到允许的属性列表中?
编辑:由于这对人们来说似乎不清楚,我已经尝试了我发布的链接中列出的所有内容.告诉我尝试其中的东西是非常令人愤怒的.别那样做.
我目前有一个使用Devise Token Auth运行的Rails 5应用程序,它部署在heroku上.
登录并注册所有工作正常,但是,如果重新启动应用程序,下次登录,给我一个500,有以下错误..任何想法?
我已经缩小了这个bug,它只发生在Heroku上.在生产模式下本地运行时,它很好.
vendor/bundle/ruby/2.3.0/gems/devise_token_auth-0.1.42/app/controllers/devise_token_auth/sessions_controller.rb:42:in `[]='
vendor/bundle/ruby/2.3.0/gems/devise_token_auth-0.1.42/app/controllers/devise_token_auth/sessions_controller.rb:42:in `create'
Run Code Online (Sandbox Code Playgroud)
设计初始化:
Devise.setup do |config|
config.secret_key = 'xxx'
Run Code Online (Sandbox Code Playgroud)
设计令牌身份验证器:
DeviseTokenAuth.setup do |config|
config.change_headers_on_each_request = false
config.token_lifespan = 1.year
end
Run Code Online (Sandbox Code Playgroud)
Profile.rb(处理身份验证的模型):
devise :database_authenticatable, :registerable,
:recoverable, :trackable, :validatable
include DeviseTokenAuth::Concerns::User
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪更长
2017-08-21T13:47:59.917645+00:00 app[web.1]: I, [2017-08-21T13:47:59.917547 #4] INFO -- : [8f6962a7-f07c-4754-959c-c51dafa37d76] Started POST "/auth/sign_in" for 82.163.112.30 at 2017-08-21 13:47:59 +0000
2017-08-21T13:48:00.165030+00:00 app[web.1]: [8f6962a7-f07c-4754-959c-c51dafa37d76] vendor/bundle/ruby/2.3.0/gems/actionpack-5.1.3/lib/action_controller/metal/basic_implicit_render.rb:4:in `send_action'
2017-08-21T13:48:00.165036+00:00 app[web.1]: [8f6962a7-f07c-4754-959c-c51dafa37d76] vendor/bundle/ruby/2.3.0/gems/activesupport-5.1.3/lib/active_support/notifications.rb:166:in `instrument'
2017-08-21T13:47:59.925118+00:00 app[web.1]: I, [2017-08-21T13:47:59.925047 #4] INFO -- : [8f6962a7-f07c-4754-959c-c51dafa37d76] Processing by DeviseTokenAuth::SessionsController#create …Run Code Online (Sandbox Code Playgroud) 目前我使用CodeIgniter进行常规查询,即:
$sql = "
SELECT *
FROM my_table
WHERE item_id > 1
";
$q = $this->db->query($sql);
Run Code Online (Sandbox Code Playgroud)
我已经开始研究ActiveRecord,它确实看起来不错,并且无论使用哪个数据库驱动程序都具有构建查询的优势 - 但是,我通常严格使用每个项目的单个数据库类型,所以这不是真正的对我有利.
我发现在我看来,常规查询(正如我在我的示例中所示)更易读,更容易维护,因此我目前正在考虑保持常规查询.
除了上面提到的原因,我应该选择哪个,以及原因是什么?
谢谢
如何使用smtpapi-ruby gem将我的rails邮件绑定到Sendgrid?我已经按照他们有限的文档,但我的电子邮件没有通过,我已经验证我的SendGrid实现只是发送一个普通的电子邮件,所以不是这样.这就是我所拥有的:
user_controller.rb
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render :show, status: :created, location: @user }
header = Smtpapi::Header.new
header.add_to(@user.email)
header.add_substitution('user', [@user.name])
header.add_substitution('body', "You've registered! This is from the controller.")
header.add_filter('templates', 'enable', 1)
header.add_filter('templates', 'template_id', 'xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx')
header.to_json
UserNotifier.welcome(header).deliver
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
Run Code Online (Sandbox Code Playgroud)
邮寄/ user_notifier.rb
class UserNotifier < ApplicationMailer
default …Run Code Online (Sandbox Code Playgroud) 我已经包含在安装导轨引擎Gemfile作为
gem 'my_engine', :path => 'engines/my_engine'
Run Code Online (Sandbox Code Playgroud)
并安装在主应用程序中
Rails.application.routes.draw do
mount MyEngine::Engine => "/blog", as: 'blog_engine'
end
Run Code Online (Sandbox Code Playgroud)
在app/engines/my_engine/app/assets/javascripts/my_engine/application.js我有
alert('hello');
Run Code Online (Sandbox Code Playgroud)
在app/engines/my_engine/lib/my_engine/engine.rb我补充说
module MyEngine
class Engine < ::Rails::Engine
isolate_namespace MyEngine
# Append engine's migrations to root app's migrations
initializer :append_migrations do |app|
unless app.root.to_s.match root.to_s
config.paths["db/migrate"].expanded.each do |expanded_path|
app.config.paths["db/migrate"] << expanded_path
end
end
end
config.autoload_paths += Dir["#{config.root}/spec/support"]
initializer "my_engine.precompile" do |app|
app.config.assets.paths << Rails.root.join('/engines/my_engine/app/assets/javascripts')
app.config.assets.precompile << "my_engine/application.js"
end
end
end
Run Code Online (Sandbox Code Playgroud)
但是当我重新加载http://localhost:3000/blog警报消息时没有出现?我错过了什么?
我想在 Fargate 容器中打开 Rails 控制台以与我的生产安装进行交互
然而,在搜索网络并在 AWS 论坛上发帖后,我找不到这个问题的答案
有谁知道我该怎么做?这似乎是任何生产环境中都必须具备的东西,但对于像 AWS 这样受人尊敬的云提供商却没有简单的方法来做到这一点,这有点令人惊讶
谢谢
console ruby-on-rails amazon-web-services amazon-ecs aws-fargate
红宝石2.1.8导轨3.2.18
我正在尝试在仅在特定属性已更改时保存记录时运行回调.例如
before_save :do_the_thing, if: :my_attr_changed?
Run Code Online (Sandbox Code Playgroud)
但是,当我改变my_attr并保存时,do_the_thing不会被调用.然而,如果我做同样的事情,但是:
before_save :do_the_thing
def do_the_thing
puts my_attr_changed?
end
Run Code Online (Sandbox Code Playgroud)
它在日志中输出"true".在这里相当困惑.任何帮助赞赏.谢谢.
根据Firebase Analytics文档(https://support.google.com/firebase/answer/6317517#active-users),有效用户数是指在指定日期启动会话的唯一身份用户数.此外,根据文档,每次启动会话时,都会session_start发送带有名称的事件.我试图使用BigQuery的导出获得该指标,但我的查询给出了不同的结果(BigQuery上的15636,FB分析上的14908)
我也试过转换到不同的时区,看看是否可能是问题,但无论我尝试哪个时区,我都没有得到相同(或类似)的结果
我应该运行哪个查询来获得针对活跃用户的Firebase Analytics信息中心获得的相同结果?
我的疑问是
SELECT EXACT_COUNT_DISTINCT(user_dim.app_info.app_instance_id)
FROM table_date_range([XXXXX.app_events_], timestamp('2016-11-26'), timestamp('2016-11-29'))
WHERE DATE(event_dim.timestamp_micros) = '2016-11-27'
AND event_dim.name ='session_start'
Run Code Online (Sandbox Code Playgroud)
谢谢
更新
在@djabi的回答后,我改变了我的查询使用user_engagement而不是session_start现在它的效果要好得多.尽管如此仍然存在一些细微的差异(根据日期,它们在16K的范围内从10以下到50以下).
我曾尝试过再次使用不同的时区,DATE(date_add(event_dim.timestamp_micros,1,'hour'))但我从来没有得到Firebase Analytics仪表板上的确切数字.
新数字足以被认为是统计上可接受的,但想知道是否有人有建议改进查询并获得确切的结果?
当前查询是:
SELECT
COUNT(*) AS active_users
FROM (
SELECT
COALESCE(user_dim.user_id, user_dim.app_info.app_instance_id) AS user_id
FROM
TABLE_DATE_RANGE([XXXXX.app_events_], TIMESTAMP('2016-11-24'), TIMESTAMP('2016-11-29'))
WHERE
DATE(event_dim.timestamp_micros) = '2016-11-25'
AND event_dim.name ='user_engagement'
GROUP BY
user_id )
Run Code Online (Sandbox Code Playgroud)
注意:目前我们没有发送user_id,所以COALESCE总会返回app_instance_id,以防有人提出可能是问题
activerecord ×2
ruby ×2
actionmailer ×1
amazon-ecs ×1
aws-fargate ×1
codeigniter ×1
console ×1
database ×1
devise ×1
firebase ×1
heroku ×1
migration ×1
rake ×1
sendgrid ×1
spree ×1