#306

Erreur Xcode et Swift : this key is not key value coding compliant

Lors du développement d’un projet de Gestion des Recettes sous iOS, je voulais pouvoir utiliser les prédicats qui permettent de faire des recherches dans des collections d’objets, pour peu qu’ils héritent de NSObject.

Mon objet Recette a les propriétés suivantes :

var id: Int?
var titre: String?
var ingredients: String?
var etapes: String?
var source: String?
var author: String?
var author_id: Int?
var url_thumb: String?
var url_header: String?
var favorite_id: Int?
var tags = [String]()

La première utilisation des prédicats pour cette application s’est trouvé sur le titre, sans souci particulier.

Par contre, en voulant utiliser le même mécanisme pour filtrer sur les Id de favoris, XCode me renvoyait toujours la même erreur :

This key is not key value coding compliant for class recettes.Recette

Après bien des recherches, j’ai compris que les Int Swift ne sont pas « key value coding compliant » ! Pour que les prédicats fonctionnent, il suffit de remplacer Int? pas NSNumber?

Assets non résolus lors du passage à Rails 4

Lors du passage d’une de mes applications à Rails 4, je me suis trouvé face à un problème que j’ai eu beaucoup de mal à résoudre. En effet, alors que les assets étaient parfaitement distribués en développement, ce n’était plus le cas en production : tous les assets autre que CSS et JS (images, polices de caractères…)  étaient distribué comme des fichiers de zéro octet.

Après de longues recherches sur le web, j’ai pu trouver la source de mes ennuis grâce au post dont vous trouverez le lien ci-dessous. Une ligne issue d’une version de Rails antérieure à la version 4 causait le problème. Il restait en effet dans le fichier config/environments/production.rb la ligne suivante :

config.action_dispatch.x_sendfile_header ="X-Sendfile"

Je l’ai donc commentée, puis ensuite ai supprimé le répertoire assets sur le serveur, et enfin redéployé mon application pour régénérer les assets Rails. Un redémarrage ensuite de mon serveur Web, et le problème était réglé !

Via stackoverflow

Associer branche et base de données

Si vous utilisez git pour développer vos applications rails, vous êtes certainement un adepte des branches, qui vous permettent de développer vos nouvelles fonctionnalités en gardant au chaud votre branche « master », qui doit correspondre à tout moment à votre application en production.

Git, branches et base de données

Git, branches et base de données

Tant que vos modifications ne concernent que votre source, pas de problème ; mas si vous touchez à la base de données, vous courez à la catastrophe, puisque cette dernière est partagée entre toutes vos branches.

Heureusement, Mislav Marohnić a développé un petit hack du fichier database.yml qui permet de lever ce problème d’une manière élégante :

  • Récupérer le nom de la branche courante
  • Vérifier que vous souhaitez bien utiliser une base de données alternative grâce à un flag posé dans la configuration de git
  • Suffixer le nom de votre base de données avec le nom de la branche

Cela se traduit de la manière suivante :

## database.yml (after) <% # http://mislav.uniqpath.com/rails/branching-the-database-along-with-your-code/ 
branch = `git symbolic-ref HEAD 2>/dev/null`.chomp.sub('refs/heads/', '') 
suffix = `git config --bool branch.#{branch}.database`.chomp == 'true' ? "_#{branch}" : "" %> 

development: 
# ... autres infos de configuration de la base de données ... 
database: myapp<%= suffix %>

Il faudra également positionner le flag dans la configuration de git :

$ git config --bool branch.feature.database true

Créez ensuite la nouvelle base de données et appliquez le schéma de celle-ci avec les commandes de Rails suivantes :

rake db:create
rake:db:schema:load

Et voià le travail !

via mislav.uniqpath.com

Redémarrer le serveur munin après l’ajout d’un noeud

Pour redémarrer munin après l’ajout d’un nouveau noeud à votre fichier de configuration /etc/munin/munin.conf, il faut exécuter une commande sous l’identité de l’utilisateur munin qui a été ajouté lors de l’installation du package. Il vous faut taper les commandes suivantes :

sudo su
su - munin --shell=/bin/bash
/usr/share/munin/munin-update
exit

Vous devriez normalement voir arriver les nouvelles données des noeuds ajoutés à votre configuration.

Via munin-monitoring.org

Utiliser la console Rails en production

La console Rails est utilisable également en production, ce qui vous permet d’obtenir des informations sur votre application (et en particulier les données qui lui sont associées) plus facilement qu’avec le client de votre base de données.

La console Rails

La console Rails

Pour utiliser la console Rails, il vous suffit de vous positionner à la racine de votre application et de taper :

rails c production

Via stackoverflow