小编Tom*_*son的帖子

Google Analytics会在自定义报告中排除空自定义变量

我为所有访客设置了自定义变量; 对于我们的注册用户来说,这是一些价值,对于未注册的用户,它是空的.

我可以使用设置在高级细分中找到未注册的用户Exclude Custom Variable (Value 02) Matching Regexp .+- 工作非常出色.

但我需要一个关于仪表板的未注册访问者的报告,并试图用过滤器做同样的事情.我有一个访问量度和所有游客都会拥有的维度(例如浏览器).我的过滤器与高级段中的过滤器相同,但是......并不精彩.我没有访问.我曾试图Include用正则表达式^$但也没有爱.

我有什么想法我做错了吗?

regex reporting google-analytics

17
推荐指数
1
解决办法
5152
查看次数

Rails respond_with - 为什么POST返回URL而不是数据?

这是一个问题"为什么这样做",而不是"我如何使这项工作".

我的应用程序正在调用返回JSON的第三方REST API,并将结果作为我自己的 JSON API的一部分返回.

我使用的是Rails 3 respond_torespond_with方法; 在GET请求的情况下,这正如我所期望的那样工作,只是通过JSON.

在这种情况下POST,它会做更多,包括从返回的对象中生成一个URL来传递一个:location选项.但由于我的对象只是JSON(不是ActiveRecord),我收到错误.

例如...

# POST /api/products.json with params id=:id
def create
  query_string = "#{user_id}&id=#{params[:id]}"
  @products = third_party_api_wrapper.products(query_string, 'POST')
  respond_with @products
end 
Run Code Online (Sandbox Code Playgroud)

我的第三方API的包装器发出一个POST请求,返回正常,然后Rails返回500错误,记录如下:

NoMethodError (undefined method `{"response":{"message":"product 4e1712d9ec0f257c510013f8 selected"}}_url' for #<MyController> 
Run Code Online (Sandbox Code Playgroud)

Rails希望我的@products对象知道如何创建位置URL.

澄清:@products第三方API返回的对象是纯JSON - 一个字符串,您可以在上面的错误日志消息中看到它.发生此错误是因为Rails似乎希望对象更多 - 在Rails内部API支持中,它是一个ActiveRecord对象.

如果我respond_with用旧式替换新的sytax

respond_to do |format|
  format.json { render :json => @products }  # note, no :location or :status options
end
Run Code Online (Sandbox Code Playgroud)

一切正常.这就是我所做的,所以我没有"如何"的问题,而是有一个"为什么"的问题.

Ryan Daigle …

rest json respond-to ruby-on-rails-3

17
推荐指数
1
解决办法
7897
查看次数

决定之间:使用Rails 3.1 app的dojo,backbone.js,knockout.js(或其他)

我们有一个现有的Rails 3.1面向消费者的Web应用程序,并且正在重新设计UI,使其更具交互性,活泼,类似应用程序.

我们有一个适度复杂的数据模型,但对基于表单的用户输入只有适度的需求.

我们现在使用jQuery,使用插件来做很好的效果,但总的来说,我们的JS技能很弱.

我们的主要目标是找到一个框架,帮助我们构建和组织JS代码,并简化我们在Rails 3.1世界中拥有数据绑定,AJAX等的情况.

我们将学习如何正确地学习JS,但是当我们这样做时,是否有一个我们可以学习并在其中工作的清晰框架?

javascript dojo backbone.js ruby-on-rails-3.1 knockout.js

13
推荐指数
1
解决办法
1万
查看次数

Rails:覆盖as_json的动态价值 - 有更聪明的方法吗?

我想输出会员链接列表,每个链接都标记为标识当前用户.它在HTML中很简单,但我们正在编写API,因此输出是JSON.

我有它工作,但它似乎过于复杂.这是最好的方法吗?

我的模型AffiliateLink包含一个字段(链接的原始HTML),我将通过添加令牌动态转换和输出.我有一个产生替换的模型方法 - 它是非平凡的,因为我们使用多个附属公司,每个都有一个特殊的转换规则,这个方法知道:

def link_with_token(user_token)
  # some gnarly code that depends on a lot of stuff the model knows
  # that returns a proper link
end
Run Code Online (Sandbox Code Playgroud)

为了在JSON中获取正确的链接html,我做了以下事情:

  • 添加attr_accessor :link_html到模型
  • 添加实例方法以设置新的访问者

...

def set_link_html(token)
  self.link_html = link_with_tracking_token(token)
end
Run Code Online (Sandbox Code Playgroud)
  • as_json在模型中覆盖,用link_html替换原始的html_code

...

def as_json(options = {})
  super(:methods => :link_html, :except => :html_code)
end
Run Code Online (Sandbox Code Playgroud)
  • 迭代控制器方法中返回的集合以进行转换

...

def index
  @links = Admin::AffiliateLink.all  # TODO, pagination, etc.

  respond_to do |format|
    format.html # index.html.erb
    format.json do
      @links.each do |link|
        link.set_link_html(account_tracking_token)
      end
      render …
Run Code Online (Sandbox Code Playgroud)

json ruby-on-rails

12
推荐指数
1
解决办法
7033
查看次数

是否可以从谷歌电子表格填充谷歌表单?

我想创建一个使用电子表格中的数据的表单,以便它是动态的。是否有可能做到这一点?我一直无法找到任何描述方法或任何示例的地方。

似乎所有可能的是从表单填充电子表格,我也会使用它,但它不是这里的主要关注点。

google-docs google-sheets google-apps-script google-forms

5
推荐指数
2
解决办法
2万
查看次数

具有delta索引的远程数据库服务器上的ThnkingSphinx(sphinxd)?

我正在设置一个简单的多层Rails 3.1设置 - 一个或多个服务器上的Web应用程序,postgresql数据库和远程服务器上的Sphinx搜索索引.

在单服务器设置上,我们使用ThinkingSphinx和delta索引(使用delayed_job),然后使用nightcron来更新主索引.效果很好.

所以:用户创建可索引的内容; app告诉delayed_job安排更新; delta-indexer为delta-index添加新内容; 搜索两者都可以正确解析搜索查询; 每晚工作重建单一主要指数.

ThinkingSphinx的文档在这里附近

最好的方法是让Sphinx,数据库和延迟的作业处理任务都在一台机器上运行.

但我不清楚如何将延迟作业流程所需的信息发送到要运行的单个服务器.我已经阅读了一些有关共享文件系统的内容(哎 - 真的吗?).我还没有读过代码,但也许有一个简单的方法?

这是希望!

search sphinx thinking-sphinx delayed-job ruby-on-rails-3

5
推荐指数
1
解决办法
860
查看次数

拥有180个POM的Maven项目 - 这是代码味道吗?

我们使用Maven 3构建了一个大型的,具有15年历史的单片Java/Scala应用程序.构建很复杂,有许多子层次项目嵌套.它运行成功,但需要10分钟(没有测试)才能完成构建.我认为我们最多有180个pom.xml文件,具有相当多的依赖项.

当然,我们正在努力提取可以独立构建,部署和运行的服务 - 这将是一个多年的项目.

在那之前,是否有关于如何在项目变大时构建构建的指南,最佳实践?

java scala build maven

5
推荐指数
1
解决办法
92
查看次数

Rails 3,多对多形式使用accepts_nested_attributes_for,如何正确设置?

我在食谱配料之间有多对多的关系.我正在尝试构建一个允许我在配方中添加成分的表单.

(这个问题的变体已被反复询问,我花了好几个小时,但基本上对于accepts_nested_attributes_for它的含义感到困惑.)

在您对以下所有代码感到害怕之前,我希望您会发现它确实是一个基本问题.这是非恐怖的细节......

错误

当我显示一个表单来创建一个食谱时,我收到错误"未初始化的常量Recipe :: IngredientsRecipe",指向我的表单中的一行

18:   <%= f.fields_for :ingredients do |i| %>
Run Code Online (Sandbox Code Playgroud)

如果我改变这一行,使"成分"单数

<%= f.fields_for :ingredient do |i| %>
Run Code Online (Sandbox Code Playgroud)

然后表单显示,但是当我保存时,我得到一个质量分配错误Can't mass-assign protected attributes: ingredient.

模型(3个文件,相应命名)

class Recipe < ActiveRecord::Base
  attr_accessible :name, :ingredient_id
  has_many :ingredients, :through => :ingredients_recipes
  has_many :ingredients_recipes

  accepts_nested_attributes_for :ingredients
  accepts_nested_attributes_for :ingredients_recipes
end

class Ingredient < ActiveRecord::Base
  attr_accessible :name, :recipe_id
  has_many :ingredients_recipes
  has_many :recipes, :through => :ingredients_recipes

  accepts_nested_attributes_for :recipes
  accepts_nested_attributes_for :ingredients_recipes
end

class IngredientsRecipes < ActiveRecord::Base
  belongs_to …
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails has-many-through nested-attributes ruby-on-rails-3

4
推荐指数
1
解决办法
3711
查看次数

在Apache上使用Rails 3.1时,PageSpeed在使用Asset Pipeline apache配置时说"指定缓存验证器"

我发现Rails 3.1指南建议与Google PageSpeed管理缓存资产的建议之间存在冲突.

导轨3.1导游资产管道提供一个解决方案Apache服务器的配置这里

apache配置的重要部分是:

<LocationMatch "^/assets/.*$">
  # Some browsers still send conditional-GET requests if there's a
  # Last-Modified header or an ETag header even if they haven't
  # reached the expiry date sent in the Expires header.
  Header unset Last-Modified
  Header unset ETag
  FileETag None
  # RFC says only cache for 1 year
  ExpiresActive On
  ExpiresDefault "access plus 1 year"
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)

一切正常,但是当我运行谷歌的PageSpeed,它抱怨说我应该"指定缓存验证"设置要么Last-Modified或者ETag,列出所有的资产文件夹中的文件.

评论Header unset Last-Modified满足PageSpeed.

我对各种页面加载进行了快速测试,至少在Chrome中,它似乎没有什么区别 - 资产是以任何方式缓存的.

有谁知道哪个合适?

apache ruby-on-rails ruby-on-rails-3.1 asset-pipeline

3
推荐指数
1
解决办法
1015
查看次数

Rails即使事务回滚,也会在事务中保存记录?

我有一系列记录作为交易的一部分保存.除了正常的AR记录,我正在进行信用卡网关交易.如果它或AR事务失败,我希望所有内容都回滚...除了从信用卡网关返回的失败事务(原因,日期等)的数据.就像是

def pay
  Payment.transaction do
    payment.save
    other.save
    result = credit_card.purchase  # this does the gateway transaction, no database stuff
    if result.failure
      raise ActiveRecord::Rollback
      result.save  # this is the part I want to always save
    end
    another.save
  end
end
Run Code Online (Sandbox Code Playgroud)

有没有办法将事务中的特定部分排除在故障后回滚?

Rails 3.2.5,MySQL 5.1

transactions ruby-on-rails-3

2
推荐指数
1
解决办法
2380
查看次数

Rails 3范围,组合条件与聚合(总和)导致错误

我正在考虑一个链接两个范围的简单问题(Rails 3.2.5).

我有一个名为模型Point与田amounttransaction_date,除其他.用户获得各种活动的积分,并且在使用之前它们是"可用的",这是作为交易的一部分发生的,此时transaction_date更新,不再为空.

所以我有这样的范围:

scope :available, where("transaction_date IS NULL OR transaction_date = ''")
Run Code Online (Sandbox Code Playgroud)

它工作得很好,返回Point对象的正确集合.所以我能做到

> Point.available
=> [#<Point id: 123, amount: 22, transaction_date: nil >][#<Point id: 456, amount: 33, transaction_date: nil >]
Run Code Online (Sandbox Code Playgroud)

如果我想知道可用点的总和,我可以做到

> Point.available.sum("amount")
=> 55
Run Code Online (Sandbox Code Playgroud)

但是,如果我试图制作另一个范围

scope :available, where("transaction_date IS NULL OR transaction_date = ''")
scope :total_available, available.sum("amount")
Run Code Online (Sandbox Code Playgroud)

我收到了错误

NoMethodError: undefined method `default_scoped?' for 22:Fixnum
Run Code Online (Sandbox Code Playgroud)

或者如果我更改范围,那么sum("amount").available我就会收到错误

NoMethodError: undefined method `available' for 55:Fixnum
Run Code Online (Sandbox Code Playgroud)

我也可以:total_available通过添加定义的条件来使范围工作:available,但这不是很干.

我在这里错过了什么?

aggregate arel ruby-on-rails-3

0
推荐指数
1
解决办法
2669
查看次数

AWS S3同步两个不同账户中的存储桶

我想跑aws s3 sync s3://bucket-in-account-1111 s3://bucket-in-account-2222

我们不想使用存储桶策略,而是希望使用跨账户 IAM 角色。

我们拥有这两个账户,并使用 AWS SSO 访问它们。我通过假定的 SSO 角色对这两个帐户拥有管理员访问权限。

我尝试遵循跨账户 IAM 角色部分中的指导。我收到权限错误An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied

目标是将对象从 复制bucket-in-account-1111bucket-in-account-2222

我在帐户 1111 和 2222 中创建了名为role-1111和 的角色role-2222

  • role-1111
    • 权限策略:允许、操作"sts:AssumeRole"、资源"arn:aws:iam::2222:role/role-2222
  • role-2222
    • 权限策略:允许、操作"s3:*"、资源"aws:arn:s3:::bucket-in-account-2222", "aws:arn:s3:::bucket-in-account-2222/*"
    • 信任策略:允许,操作:"sts:AssumeRole",委托人:"AWS: arn:aws:iam::1111:role/role-1111"

通过此配置,以我的正常角色登录帐户 1111,

  • 这些工作:
    • 列出内容aws s3 ls s3://bucket-in-account-1111
    • 承担角色角色-2222aws sts assume-role --role-arn arn:aws:iam::2222:role/role-2222 --role-session-name me@example.com …

amazon-s3 amazon-web-services amazon-iam

0
推荐指数
1
解决办法
856
查看次数